例如请求 Header 为: Authorization: Bearer Token 这样多加一个 Bearer 有什么作用吗,仅仅只是约定俗成吗?jwt生成的token形如token的字符串,但是为什么我们通常传输的是Bearer token呢,还要多次一举地添加上一个Bearer呢?
Bearer Token (RFC 6750) 用于OAuth 2.0授权访问资源,任何Bearer持有者都可以无差别地用它来访问相关的资源,而无需证明持有加密key。一个Bearer代表授权范围、有效期,以及其他授权事项;一个Bearer在存储和传输过程中应当防止泄露,需实现Transport Layer Security (TLS);一个Bearer有效期不能过长,过期后可用Refresh Token申请更新。
设计 API 授权,或者调用第三方 API 时,经常会接触到:
Authorization : Bearer Token
有没有疑惑为何不直接写成这样就得了:
Authorization : Token
这是因为 W3C 的 HTTP 1.0 规范,Authorization 的格式是:
Authorization: <type> <authorization-parameters>
所以 Bearer 是授权的类型,常见的授权类型还有:
Basic 用于 http-basic 认证;
Bearer 常见于 OAuth 和 JWT 授权;
Digest MD5 哈希的 http-basic 认证 (已弃用)
AWS4-HMAC-SHA256 AWS 授权