【发布时间】:2011-08-21 00:32:53
【问题描述】:
我正在尝试实现 OAuth 2 规范中的 Resource Owner & Password Credentials 流。我无法理解带有有效响应的token_type 值。在规范中,所有示例都显示"token_type":"example",但说应该是
token_type 必需的。发行的令牌类型,如中所述 Section 7.1。值不区分大小写。
谁能给我解释一下?
【问题讨论】:
标签: oauth-2.0
我正在尝试实现 OAuth 2 规范中的 Resource Owner & Password Credentials 流。我无法理解带有有效响应的token_type 值。在规范中,所有示例都显示"token_type":"example",但说应该是
token_type 必需的。发行的令牌类型,如中所述 Section 7.1。值不区分大小写。
谁能给我解释一下?
【问题讨论】:
标签: oauth-2.0
token_type是Access Token generate call to Authorization server中的一个参数,它本质上代表了一个access_token将如何被生成和呈现给资源访问调用。
您在对授权服务器的访问令牌生成调用中提供 token_type。
如果您选择 Bearer(大多数实现的默认设置),则会生成 access_token 并将其发回给您。 Bearer 可以简单的理解为“赋予这个token的持有者访问权”。一个有效的令牌,不问任何问题。另一方面,如果您选择Mac 和sign_type(在大多数实现中默认为hmac-sha-1),则会生成访问令牌并在密钥管理器中作为一个属性作为秘密保存,并且将加密的秘密作为@发送回987654328@.
是的,您可以使用自己的 token_type 实现,但这可能没有多大意义,因为开发人员需要遵循您的流程,而不是 OAuth 的标准实现。
【讨论】:
任何人都可以将“token_type”定义为 OAuth 2.0 扩展,但目前“不记名”令牌类型是最常见的一种。
https://www.rfc-editor.org/rfc/rfc6750
基本上这就是 Facebook 所使用的。不过,它们的实现与最新规范相比有些落后。
如果您想比 Facebook 更安全(或与具有“签名”的 OAuth 1.0 一样安全),您可以使用“mac”令牌类型。
但是,由于 mac 规范仍在迅速变化,这将是一个艰难的过程。
https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-http-mac-05
【讨论】:
不记名令牌
一种安全令牌,拥有该令牌的任何一方(“持有者”)可以以任何其他拥有它的一方可以使用的任何方式使用令牌。使用不记名令牌不需要不记名证明拥有加密密钥材料(所有权证明)。
承载令牌或刷新令牌由身份验证服务器为您创建。当用户对您的应用程序(客户端)进行身份验证时,身份验证服务器会为您生成承载令牌(刷新令牌),然后您可以使用该令牌获取访问令牌。
承载令牌通常是身份验证服务器创建的某种神秘值,它不是随机的,它是根据授予您访问权限的用户和您的应用程序获得访问权限的客户端创建的。
【讨论】: