需要了解的 API Token(令牌)
现在项目开发大部份都是基于前后端分离的,前后端分离就涉及 API。关于 API 不仅包括设计规范的制定,还需要考虑安全问题。API 令牌是 API 开发人员用来确保 API 资产尽可能安全的最流行的方法之一。文章来一起总结一些关于 API 令牌的知识。
API令牌指南
先来看下API令牌的定义,API令牌到底是什么?API令牌,有时被称为访问令牌,是包含用户相关信息的一小段代码集合。尽管这些片段很小,但它们可以包含大量的数据。
API 令牌通常需要考虑特定的设备,用户可能需要在智能手机上获得一个API令牌,在桌面登录时获得另一个API令牌。这样做有利于开发和用户,尽可能保证账户安全。
API 令牌有时也可以扩展,最常见的社交登录,例如微博登录、QQ登录、微信登录等等。
API 令牌的组成
API 令牌只需几个字节即可传输大量数据,API 令牌最常见的结构是:
header
payload
signature
header
让 API 知道令牌的格式,因此它知道会发生什么。payload
或 body
包含所有相关的用户数据,包括权限和到期时间。
signature
包含用于用户验证的所有数据,签名通常经过哈希处理,避免伪造。
payload
是 API 令牌中最重要的部分,它本质上是 API 的密钥。特定的 API 资源将包含特定信息在 API 令牌 payload
中。如果它不存在或不正确,调用者将无法访问该资源。
在开发人员方面,API 开发人员可以自定义接收令牌的方式。例如,谷歌允许使用一个令牌访问九种不同的资源。一个站点也可以有不同类型的令牌。
API 令牌如何工作
API 令牌的工作方式与 API 非常相似。与 API 一样,API 令牌以预定格式提供 payload
,将 API 视为带有 API 令牌的锁。
API 令牌遵循一系列步骤。首先,API 验证 payload
中的用户名和密码,一旦验证通过了,API 就会将资产发送到浏览器以进行存储。然后,只要向 API 发送查询,访问令牌就会随着请求一起发送。它起到握手的作用,确保只要令牌有效,API 就会为保持解锁状态。
也可以发行单点登录 (SSO) 令牌。SSO 的一个典型示例,常用于多站点身份验证方案。
0Auth 2.0 API 令牌
API 令牌的实现方式由多种,目前比较常用的是 0Auth 2.0
标准。0Auth 1.0
是华而不实的,具有华而不实的仪表板和易于实施,而 0Auth 2.0
被大部分开发者接受的是它弥补了 0Auth 1.0
的缺陷,提高了安全性,而新标准更适合移动设备。
0Auth 2.0
对于确保 API 真正安全至关重要,使用 0Auth 2.0
时不会交换敏感信息。这就是 API 令牌发挥作用的地方,如信用卡信息、登录凭据和密码等敏感信息是不允许设计在令牌中。
0Auth 2.0
API 令牌对最终用户也有好处,它们使登录变得轻松无感,它还提供了对用户数据的更大控制权。
0Auth 2.0
使用安全套接字层 (SSL) 来确保数据保护和隐私, SSL 使用最新、最强大的加密协议来确保数据安全。然后通过 API 令牌允许访问。如果出现问题,0Auth 2.0
API 令牌也更容易撤销。
API 令牌最佳实践
实现项目开发中有许多方法可以发布和使用 API 令牌,而每种方法都有其优点和潜在的不足。在决定哪种格式适合时,建议可以考虑以下几点:
- 如果要为最终用户应用程序颁发令牌,那么
OAuth2.0
API 令牌是最佳选择,因为它能够与资源服务器交互。 - 如果 API 旨在用作其他应用程序的服务,则应使用简单的 API 令牌。
- 如果使用基于令牌的方法,则应在 JSON 文件中的
Authorization: Bearer
对象中包含所有必要的身份验证数据。不要使用简单的基于字符串的身份验证方式,而是使用我之前讨论过的 JWT 格式《 避免将 JWT 存储在 localStorage 中》。 JWT 已经普及,因此大多数编程语言和框架都可以对其进行解码。