OAuth 2中的承载令牌和token_type是什么?


140

我正在尝试从OAuth 2规范实施资源所有者和密码凭证流。我无法理解通过token_type有效响应发送回的值。规格中的所有示例均显示,"token_type":"example"但表示应

token_type必填。如7.1节所述发行的令牌类型 。值不区分大小写。

有人可以向我解释一下吗?

Answers:


158

token_type是对授权服务器的访问令牌生成调用中的一个参数,该参数实质上表示如何为资源访问调用生成和显示access_token。您在访问令牌生成调用中向授权服务器提供token_type。

如果您给出Bearer(大多数实现中为默认值),access_token则会生成一个,并发送回给您。承载可以简单地理解为“允许访问此令牌的承载”。一个有效的令牌,没有问题。另一方面,如果选择Macsign_typehmac-sha-1大多数实现中的默认设置),则会生成访问令牌并将其作为属性在密钥管理器中保留为机密,并且将加密的机密发送为access_token

是的,您可以使用自己的实现token_type,但这可能没有多大意义,因为开发人员将需要遵循您的流程,而不是OAuth的标准实现。


28
我发现“允许访问此令牌的载体”使它更易于理解。这相当于发行一张支票“把钱交给支票持有人”。
NVM

@NVM感谢您的建议,这当然是有道理的。我已经更新了。
Abhishek Tyagi

33

任何人都可以将“ token_type”定义为OAuth 2.0扩展,但目前“承载”令牌类型是最常见的一种。

https://tools.ietf.org/html/rfc6750

基本上这就是Facebook所使用的。但是,它们的实现与最新规范相比有些落后。

如果您想比Facebook更安全(或与具有“签名”的OAuth 1.0一样安全),则可以使用“ mac”令牌类型。

但是,由于mac规范仍在迅速变化,因此这将是困难的方法。

https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05


14

Mozilla MDN标头信息

承载令牌
一种具有所有权的安全令牌,拥有该令牌的任何一方(“承载者”)可以以任何拥有它的任何其他方可以使用的任何方式使用该令牌。使用承载令牌不需要承载者证明拥有加密密钥材料(资产证明)。

身份验证服务器为您创建了Bearer令牌或Refresh令牌。当用户对您的应用程序(客户端)进行身份验证时,身份验证服务器便会为您生成一个Bearer令牌(刷新令牌),然后您就可以使用该令牌来获取访问令牌。

承载令牌通常是身份验证服务器创建的某种加密值,它不是随机的,而是基于用户授予您访问权限和客户端获得应用程序访问权限而创建的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.