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

news2025/1/21 21:52:04

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.coloradmin.cn/o/434332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何创建Spring项目

创建Spring项目 创建一个Maven项目 这里使用的是2023版本的idea。 添加Spring框架支持 在项目的pom.xml中添加Spring支持。这里可以到中央仓库找一下。 <dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dep…

Android Binder 图文解释和驱动源码分析

前言 最近在学习Binder&#xff0c;之前都是跳过相关细节&#xff0c;通过阅读文章对Binder有了一些认识&#xff0c;但是并没有真正理解Binder。如果要深入理解Framework的代码&#xff0c;就必须要真正理解Binder。 我学习Binder的方法&#xff1a; 一边阅读Gityuan的Bind…

视觉语言模型究竟能帮助我们完成哪些工作?

当前&#xff0c;多模式人工智能已经成为一个街谈巷议的热门话题。随着GPT-4的最近发布&#xff0c;我们看到了无数可能出现的新应用和未来技术&#xff0c;而这在六个月前是不可想象的。事实上&#xff0c;视觉语言模型对许多不同的任务都普遍有用。例如&#xff0c;您可以使用…

vmware VM虚拟机去虚拟化教程 硬件虚拟机 过鲁大师检测

一 准备工作 1. 这里演示的VM虚拟机版本是12.5.9 虚拟机系统是win7 64位 2. 用到的工具 winhex和Phoenix BIOS Editor 下载地址工具 链接&#xff1a;https://pan.baidu.com/s/1b3FfA3FyQ_lnFQSjpCGLGg?pwd1221 提取码&#xff1a;1221 3. 注意&#…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)---昇腾AI入门课(上)

AscendCL快速入门 AscendCL概述 AscendCL功能介绍 AscendCL基础概念解析 应用开发流程 样例代码精讲

Vivado综合参数设置

如果你正在使用Vivado开发套件进行设计&#xff0c;你会发现综合设置中提供了许多综合选项。这些选项对综合结果有着潜在的影响&#xff0c;而且能够提升设计效率。为了更好地利用这些资源&#xff0c;需要仔细研究每一个选项的功能。本文将要介绍一下Vivado的综合参数设置。 …

SpringBoot解决用户重复提交订单(方式一:通过唯一索引实现)

文章目录 前言1、方案实现1.1、给数据库表增加唯一键约束1.2、编写获取请求唯一ID的接口1.3、业务提交的时候&#xff0c;检查唯一ID 2、小结 前言 对于投入运营的软件系统&#xff08;商城、物流、工厂等&#xff09;&#xff0c;最近小编在巡检项目数据库的时候&#xff0c;发…

【场景生成与削减】基于蒙特卡洛法场景生成及启发式同步回带削减风电、光伏、负荷研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

学习笔记 -- C++性能评估工具Perf

Installation sudo apt update sudo apt install linux-tools-common查看你的内核&#xff1a; uname -r我的输出&#xff1a; $ uname -r 5.15.0-67-generic安装对应的 tools&#xff1a; sudo apt install linux-tools-5.15.0-67-genericImplementation 1、Perf List 状…

PyTorch 人工智能研讨会:1~5

原文&#xff1a;The Deep Learning with PyTorch Workshop 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心…

vmware 打开报错

Error: VMware Workstation failed? I downloaded ccleaner to free up my ram and to get rid of some junk files. I ran ccleaner, tried to start my vmware and I got the error message “VMware Workstation failed to start the VMware Authorization Service. You ca…

WPS两次变身:超级会员+超级表格,完美逆袭,这次再也不输office

WPS会员变“超级会员” WPS宣布会员服务升级&#xff0c;将原有的“WPS会员”、“稻壳会员”及“超级会员”进行合并&#xff0c;推出“WPS超级会员”&#xff0c;提供了Pro和基础两个版本套餐。 过去被吐槽的“套娃式”收费被整合&#xff0c;你可以根据日常办公和专业办公的…

数据结构——AVL树

AVL树 概念节点定义插入旋转左单旋与右单旋双旋转 验证AVL树删除&#xff08;了解&#xff09; 概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。 因此…

抛弃丑陋的try-catch,优雅处理异常

随着业务逻辑变得越来越复杂&#xff0c;我们在编写代码时会遇到各种异常情况&#xff0c;这时就需要使用try-catch语句来捕获异常并进行处理。但是&#xff0c;大量的try-catch语句会让代码变得臃肿&#xff0c;不易维护&#xff0c;因此&#xff0c;我们需要一种优雅的方式来…

UDS统一诊断服务【六】访问时序参数0X83服务

文章目录 前言一、访问时序参数服务介绍二、数据格式2.1 请求报文2.2 子功能2.3 响应 三、举例 前言 本文介绍UDS统一诊断服务的访问时序参数0X83服务&#xff0c;希望能对你有所帮助 一、访问时序参数服务介绍 这个服务我目前在项目中没怎么用到过&#xff0c;先来看看ISO14…

【三十天精通Vue 3】第十三天 Vue 3 的插件详解

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、插件概述1.1 插件简介1.2 插件的使用1.3 插件的分类 二、…

五、vue基础-指令之v-bind

一、v-bind 前面要讲的一系列指令&#xff0c;主要是将值插入到模板内容中。 但是&#xff0c;除了内容需要动态来决定外&#xff0c;某些属性我们也希望动态来绑定。 比如动态绑定a元素的href属性&#xff1b;比如动态绑定img元素的src属性&#xff1b; 绑定属性我们使用v-…

智能电网中针对DOS和FDIA的弹性分布式EMA(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 ​智能电网是一种典型的信息物理融合系统,也是关系国民经济发展和国家安全的重大关键基础设施,其安全稳定运行至关重要。近年来…

java某百货店POS积分管理系统_积分点更新生成以及通票回收处理

百货店是生活中不可缺少的一部分&#xff0c;为了给顾客提供更方便的服务平台以及更好的服务质量&#xff0c;而设计了POS积分管理系统。百货店通过点积分的管理获得顾客更好的信誉&#xff0c;增加客户流量&#xff0c;获得更多的利益。在百货店经营的过程中&#xff0c;每天的…

软考 软件设计师上午题面向对象

面向过程和面向对象 省略面向对象可以省略过程&#xff0c;复杂事情简单化 类 类是对象的抽象&#xff0c;对象是类的实例 一般类是交通工具。特殊类是轮船飞机。因为他们是特殊的佳通工具&#xff0c;一个天上的一个海上的 对象 属性别名状态成员变量&#xff0c;方法也叫…