5

我一直在阅读此规范以将 JWT(JSON Web 令牌)与 OAuth 结合使用。

2.12.2中,它说 JWT 可以用作授权授予或客户端身份验证。

据我了解,身份验证是为了识别某些东西(这个用户就是他声称的那个人),而授权是检查用户是否被允许做他所要求的事情。

JWT 作为授权授予是有意义的,因为请求是通过签名来隐式标识的。大多数支持此方法的 API 都使用 JWT 作为授权授予。请参阅salesforcegoogle

这就是让我感到困惑的地方。为什么需要将 JWT 身份验证作为一个单独的东西? 在什么情况/用例下需要 JWT 身份验证?

4

1 回答 1

3

1. JWT 作为授权授予

在这种情况下,客户端以某种未指定的方式获得了 JWT,它可以在令牌端点上呈现给授权服务器,以代表发出 JWT 的一方获取访问令牌(和可选的刷新令牌)。这可能是最终用户(或资源所有者)本人,但 JWT 通常也可以由受信任的第 3 方(其他用户或组织)签名。这可以适用于公共和机密客户。

请注意,这将代码与授权服务器紧密绑定的更常规的授权代码授予替换更灵活的机制,其中授权 (JWT) 可能由第 3 方发布,从而启用跨管理边界工作的联合系统。

JWT 将是短暂的,仅供一次性使用。

2. JWT 作为客户端认证

在这种情况下,客户端向令牌端点提供一个 JWT,作为需要与令牌端点交互的任意授权类型(甚至可能是 JWT 授权授权!)的流的一部分;一个典型的例子是授权代码授权,其中客户端收到资源所有者同意的代码,需要在令牌端点交换访问令牌(和可选的刷新令牌),并且客户端使用 JWT 对自己进行身份验证。

这意味着/定义/需要一个机密客户端,而 JWT 替代了更常规(且难以管理)的客户端机密。

JWT 将长期存在并多次使用。

于 2014-12-19T21:17:22.043 回答