我正在尝试实施OAuth 2规范中的Resource Owner & Password Credentials流程。我无法理解通过有效响应发回的token_type
值。在规范中,所有示例都显示"token_type":"example"
但是它应该是
token_type 需要。按照中所述发布的令牌类型 Section 7.1。值不区分大小写。
有人可以向我解释一下吗?
答案 0 :(得分:153)
token_type
是访问令牌生成对授权服务器的调用中的一个参数,它实质上表示如何为资源访问调用生成和呈现access_token。
您在访问令牌生成调用中向授权服务器提供token_type。
如果您提供 Bearer
(大多数实施时都是默认值),系统会生成access_token
并发回给您。持票人可以简单地理解为"允许访问该令牌的持有者。"一个有效的令牌,没有问题。另一方面,如果您在大多数实现中选择Mac
和sign_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规范仍在快速变化,因此很难实现。
答案 2 :(得分:12)
Mozilla MDN Header Information
承载令牌
具有属性的安全令牌,即拥有该令牌的任何一方(“持票人”)可以以任何其他拥有该令牌的方式使用该令牌。使用不记名令牌不需要持票人证明拥有加密密钥材料(占有证明)。
身份验证服务器为您创建了承载令牌或刷新令牌。当用户对您的应用程序(客户端)进行身份验证时,身份验证服务器会为您的承载令牌(刷新令牌)生成,然后您可以使用该令牌来获取访问令牌。
承载令牌通常是由认证服务器创建的某种神秘值,它不是随机的,它是根据用户授予您访问权限和您的应用程序访问的客户端创建的。