API 鉴权都有哪些分类,这些重点不要错过

news/2024/7/10 19:02:33 标签: 开源, 团队开发, 程序人生, 测试工具

API鉴权是保证API安全性和可用性的一项重要措施。通过API鉴权,系统可以对用户或者应用进行有效的身份认证和权限管理。一般来说,在实际开发中,我们使用以下几种API鉴权方式:

1. 基本认证

基本认证是API鉴权的一种最基本形式。此方法要求在每个API请求的标头中包括访问提交的用户名和密码。

优点

  • 简单易用,易于开发和集成。

  • 支持多数Web浏览器和HTTP客户端。

  • 适合实施基本安全特征,并仅涉及少量请求和响应的场景。

缺点

  • 传输协议使用明文传输,存在被盗窃的风险。

  • 用户名和密码可能会在未加密的情况下从网络上截获。

  • 不适用于高度敏感的数据或API场景。

2. OAuth认证

OAuth是一种现代化的API鉴权机制,由OAuth联盟开发。它基于授权委派设计原则,允许用户使用第三方应用程序访问受保护资源。用户在向客户端授权之后,客户端使用OAuthAccessToken作为资源所有者的代表来访问该保护资源。

优点

  • 高度安全性。减少身份泄漏风险。

  • 支持授权委派和令牌取代的功能,提高了可控性和在场景中广泛适用性。

  • 可以被部署于适用于移动、Web和桌面应用程序等不同设备上。

  • 支持多种鉴权类型

缺点

  • 依赖认证服务器,如果认证服务器出现问题,API将无法使用。

  • OAuth的设计非常复杂且学习曲线比较长。

3. JSON Web TokenJWT)认证

JSON Web Token是一种开放标准,可以让服务器生成一个密钥签名的Token,该Token包含用户、其角色和过期时间等信息。JWT Token会发送回客户端,然后传递到后续的API请求中,以对接下来的操作进行认证和授权。

优点

  • JWT Token具有较好的灵活性和简洁性,系统易于维护。

  • 可以将TOKEN注入前后端一起开发中,以改进单页应用程序的性能和效率。

  • 支持自定义尽可能广泛的内容.

缺点

  • 若私钥密钥或算法不当,会增加构造伪装调用的风险。

  • 对于高度敏感的数据或API场景,需要大量额外的Token的不断处理、比对和验证操作。

4. API密钥认证

API密钥认证基于系统提供给客户端一个API工具及其机制,并生成API Key作为权限标识。该API Key可以用于API调用前的身份验证,以验证某个客户端是否具有访问和使用API的权限。

优点

  • 第三方开发人员可以控制他们的Key,管理他们如何使用你的API。

  • 构建高级漏洞扫描、定向攻击和检测流量威胁等情况时,易于构建Key黑名单/白名单。

  • 使用方便且无需复杂的安全实施。

缺点

  • 如果API已经破解,那么一旦他们拥有知道API Key,恶意第三方需要很少的资源就能进行创者调用。

  • API Key粒度较大,授权策略较难建立,泄露风险潜在存在。

5. HMAC认证

HMAC(Hash-based Message Authentication Code)认证是一种基于哈希函数的鉴权技术。服务器和客户端共同维护一个密钥,利用该密钥和请求消息的摘要来生成鉴权信息,确保请求消息的完整性和身份认证。

优点

  • HMAC鉴权比较简单,易于实现,适用于移动设备等资源受限环境。

  • 可以保护未加密协议的数据传输中的信息安全,减小数据泄露风险。

  • 安全性较好,可以避免消息被劫持篡改。

缺点

  • 需要共同维护一个共享的密钥,如果密钥泄露,就可能造成严重的安全问题。

  • 对于非对称加密,需要进行更多的运算工作,导致通信延迟增加。

比较不同API鉴权方式的适用场景

从不同的优缺点来看,各种API鉴权方式和场景的匹配如下:

  • 基本认证:适用于内部API,API访问人员数量有限,适用于传输敏感度低的数据。

  • OAuth认证:适用于公共API,能够使用从用户那里获得的授权来访问API。

  • JWT认证:适用于有共同密钥的微服务系统内部,可避免每个服务在鉴权时都要依赖OAuth授权服务器。

  • API密钥认证:适用于少量第三方API用户,这些第三方API用户可以获得一个唯一的API密钥,但它们可能不具备OAuth所需要的复杂性和灵活性,使用上更加易简单易用。

  • HMAC认证:适用于传输敏感数据的API场景,即使通信初始化过程被拦截,攻击者也无法重放此请求。

结论

在实际开发中,我们可以根据API开发者的需求和对数据安全性的考虑,并结合各种API鉴权方式的优缺点来选择合适的API鉴权机制。一旦确定了API鉴权方式,我们应该时刻注意维护授权信息、监测请求、响应日志与保护API某些细节特征等,以保证给用户提供高质量、高效连接API访问体验的同时,建立一个健康的生态系统。因此,建议在API设计之前就评估鉴权机制,并整体规划, 执行和监测API开发周期,为API产品的持续增长创造有利的条件。

给大家推荐一个开源的 API 管理工具-Postcat,除了 API 鉴权的相关插件,还有其他的更多的宝藏插件,比如 Chatgpt、 Apispace、Swagger同步URL 等插件。

如果你觉得这个开源项目还可以的话,不妨点个 star 支持下他们,如果你觉得还需要继续优化,不妨去提个Issue.

Github:

https://github.com/Postcatlab/postcat

Gitee:

https://gitee.com/eolink_admin/postcat


http://www.niftyadmin.cn/n/239455.html

相关文章

论:开发者信仰之“天下IT是一家“(Java .NET篇)

比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代。 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁。 2013年他与微软做了最后的道别。 2013年以后,我才真正看到了微软的变化。尤其是它的“云优先,移…

重学Java设计模式-行为型模式-迭代器模式

重学Java设计模式-行为型模式-迭代器模式 内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-23-重学 Java 设计模式《实战迭代器模式》.html#重学-java-设计模式-实战迭代器模式「模拟公司组织架构树结构关系-深度迭代遍历人员信息输出场景」 迭代…

抖音滑块以及轨迹分析

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 我们在web端打开用户主页的时候,时不时的会出现滑…

内存的分区

目录 内存分区介绍 区域功能 内存分区运行前后的区别 运行之前(代码区数据区未初始化数据区) 运行之后(代码区数据区未初始化数据区栈区堆区) 缓冲区 缓冲区有什么用? 缓冲区的三种类型 缓冲区的刷新 内存分布图 栈与堆…

Salesforce如何防止黑客攻击和数据泄露?了解他们的安全措施!

安全性一直是Salesforce密切关注的问题。Google的安全浏览报告指出,2022年网络钓鱼网站的数量增加了80%。面对着黑客攻击、安全漏洞、数据泄露等不安全事件频发,实施更强大的安全措施比以往更加重要。 调查显示,电子邮件目前是网…

Spring MVC 参数解析(13)

目录 简介 调用流程 1. 首先,还是需要进行到前端控制器的doDispatch方法,这是我们的调用Spring MVC的核心入口方法 2. 在doDispatch方法内部,我们调用到了HandlerAdapter.handle(*****) 方法 3. 最终,我们会来到 RequestMappi…

【Linux】MySQL高可用之读写分离监控实践

一、Mycat-web安装配置 1、Mycat节点安装zookeeper(在mycat实现了读写分离上安装) ① 解压zookeeper压缩包 tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/② cd到cnf目录下将文件复制 ③ cd到bin目录下启动 ./zkServer.sh start2、Mycat节点安装mycat-we…

8.redis-BigKey,双写

一.BigKey 1.海量数据里如何查询某一固定前缀的key scan cursor match key* [COUNT count] 2.如何限制keys *, flushdb,flushall等危险命令防止误删除 rename-command keys "" rename-command flushdb "" rename-command flushall "" 3.memory u…