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

问题描述 投票:132回答:3

我正在尝试从OAuth 2规范中实现Resource Owner & Password Credentials流程。我无法理解通过有效响应发回的token_type值。在规范中,所有的例子都显示"token_type":"example",但它应该是

token_type REQUIRED。如Section 7.1中所述发布的令牌类型。值不区分大小写。

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

oauth-2.0
3个回答
152
投票

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

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

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


32
投票

任何人都可以将“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


12
投票

Mozilla MDN Header Information

持票人令牌 具有属性的安全令牌,即拥有该令牌的任何一方(“持票人”)可以以任何其他拥有该令牌的方式使用该令牌。使用不记名令牌不需要持票人来证明拥有加密密钥材料(占有证明)。

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

承载令牌通常是由认证服务器创建的某种神秘值,它不是随机的,它是根据用户授予您访问权限和您的应用程序访问的客户端创建的。

© www.soinside.com 2019 - 2024. All rights reserved.