四种最常用的 REST API 身份验证方法

身份验证与授权
在深入探讨这个问题之前,让我们先定义一下身份验证到底是什么,更重要的是,它不是什么。尽管身份验证推动了现代互联网的发展,但该主题经常与一个密切相关的术语混为一谈:授权。

这两个功能通常在单一解决方案中捆绑在一起,但划分授权和身份验证的最简单方法是问:它们实际上声明或证明了关于我的什么?

身份验证是指实体证明身份。换句话说,身份验证证明您就是您所说的那个人。这就像拥有由值得信赖的权威机构颁发的驾驶执照,请求者(例如警察)可以将其用作证明您确实是您所说的人的证据。

授权是一个完全不同的概念,简单来说,授权是指实体证明访问权。换句话说,授权证明您有权提出请求。请考虑以下事项:您有一张工作钥匙卡,仅允许您打开工作区域中的部分门,但不能打开全部门。

总之:

身份验证是指证明正确的身份。授权是指允许某种行为。

API 可能会对您进行身份验证,但不会授权您发出特定请求。

授权与身份验证

授权与身份验证


现在我们知道了什么是身份验证,让我们看看 REST API 中最常用的身份验证方法是什么。

四种最常用的身份验证方法
让我们回顾一下当今使用的四种最常用的身份验证方法。

HTTP 身份验证方案(基本和承载)
HTTP 协议还定义了 HTTP 安全身份验证方案,例如:

基本的
承载者
消化
OAuth 和其他...
在讨论 REST API 时,我们将回顾当今最常用的两个。HTTP 基本身份验证由于其固有的安全漏洞而很少被推荐。

这是最直接的方法,也是最简单的方法。使用此方法,发送者将用户名:密码放入请求标头中。用户名和密码采用Base64编码,这是一种将用户名和密码转换为一组64个字符的编码技术,以确保安全传输。

此方法不需要 cookie、会话 ID、登录页面和其他专业解决方案。因为它本身使用 HTTP 标头,所以不需要握手或其他复杂的响应系统。

以下是请求标头中基本身份验证的示例:
Authorization: Basic bG9sOnNlY3VyZQ==

承载身份验证(也称为令牌身份验证)是一种 HTTP 身份验证方案,涉及称为承载令牌的安全令牌。

“承载身份验证”这个名称可以理解为“授予此令牌的承载者访问权限”。不记名令牌允许访问特定资源或 URL,很可能是一个神秘字符串,通常由服务器响应登录请求而生成。

向受保护资源发出请求时,客户端必须在 Authorization 标头中发送此令牌:
Authorization: Bearer

承载身份验证方案最初是作为RFC-6750 中OAuth 2.0的一部分创建的,但有时也单独使用。

与基本身份验证类似,承载身份验证只能通过 HTTPS (SSL) 使用。

API 密钥
在REST API安全中,API密钥在业界被广泛使用。但是,这种方法不应被视为良好的安全措施。

API 密钥的创建是为了解决 HTTP 基本身份验证和其他此类系统的早期身份验证问题。在此方法中,为每个首次使用的用户分配唯一的生成值,表示该用户是已知的。当用户尝试重新进入系统时,他们的唯一密钥(有时是根据其硬件组合和IP数据生成的,有时是由认识他们的服务器随机生成的)用于证明他们与以前是同一用户。

4 种最常用的 REST API 身份验证方法

要求


许多 API 密钥作为 URL 的一部分在查询字符串中发送,这使得无权访问它的人更容易发现。请不要在查询字符串参数中放置任何 API 密钥或敏感信息!更好的选择是将 API 密钥放在 Authorization 标头中。事实上,这就是提议的标准:Authorization: Apikey 1234567890abcdef。

然而,实际上 API 密钥出现在各种地方:

授权标头
基本认证
身体数据
自定义标头
请求参数
使用 API 密钥肯定有一些正当理由。首先,API 密钥很简单。使用单个标识符很简单,对于某些用例来说,这是最佳解决方案。例如,如果 API 的功能受到特别限制,其中“读取”是唯一可能的命令,则 API 密钥可能是一个适当的解决方案。无需编辑、修改或删除,安全性就较低。

你可能感兴趣的:(api)