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

时间:2011-05-08 06:22:36

标签: oauth-2.0

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

  

token_type            需要。按照中所述发布的令牌类型            Section 7.1。值不区分大小写。

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

3 个答案:

答案 0 :(得分:153)

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

如果您提供 Bearer (大多数实施时都是默认值),系统会生成access_token并发回给您。持票人可以简单地理解为"允许访问该令牌的持有者。"一个有效的令牌,没有问题。另一方面,如果您在大多数实现中选择Macsign_type(默认hmac-sha-1),则会生成访问令牌,并在密钥管理器中将其保密为属性和加密密钥以access_token

的形式发回

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

答案 1 :(得分:32)

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

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

答案 2 :(得分:12)

Mozilla MDN Header Information

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

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

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