OAuth中基于JWT的客户端认证和授权许可的区别

5
我一直在阅读有关使用JWT(JSON Web Tokens)与OAuth的规范
2.12.2中,它说JWT可以用作授权授予或客户端身份验证。
据我所知,认证是为了识别某些东西(此用户是他声称的用户),而授权是为了检查用户是否被允许执行所请求的操作。
将JWT用作授权授予是有道理的,因为请求是通过签名隐式标识的。大多数支持此方法的API都使用JWT作为授权授予方式。请参见salesforcegoogle
这就让我感到困惑了。为什么需要JWT认证作为一个独立的事物?在什么情况/使用场景下需要JWT认证?
1个回答

5

1. JWT作为授权许可

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

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

JWT将是短暂的,只能使用一次。

2. JWT作为客户端认证

在这种情况下,客户端在令牌端点上呈现JWT作为任意授权类型流程(甚至包括JWT授权许可!)的一部分,该流程需要与令牌端点交互;典型示例是授权码授权,其中客户端接收由资源所有者同意的代码,需要在令牌端点上将其交换为访问令牌(和可选的刷新令牌),并使用JWT对其进行身份验证。

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

JWT将是长期有效的,可以多次使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接