Oauth JSON Web令牌中的客户端ID或多个访问群体
我在应用程序中使用JWT实现OAuth 2.0,在决定将什么设置为我的Oauth JSON Web令牌中的客户端ID或多个访问群体,oauth,oauth-2.0,jwt,json-web-token,Oauth,Oauth 2.0,Jwt,Json Web Token,我在应用程序中使用JWT实现OAuth 2.0,在决定将什么设置为我的audclaim as时遇到困难。用户将通过我的身份验证服务器“登录”到我的客户端,以访问我的API(资源)服务器。我希望我的令牌仅对特定客户端和特定API有效 从我的客户机登录时,我在请求中不包括client\u id,但在中,aud设置为该client\u id。我倾向于在我的登录请求中包含一个客户观众id字段,然后将令牌中的aud设置为客户id和观众id的数组,但这感觉就像是说该令牌对这两个观众都有效,这让我觉得我应该
aud
claim as时遇到困难。用户将通过我的身份验证服务器“登录”到我的客户端,以访问我的API(资源)服务器。我希望我的令牌仅对特定客户端和特定API有效
从我的客户机登录时,我在请求中不包括client\u id
,但在中,aud
设置为该client\u id
。我倾向于在我的登录请求中包含一个客户观众id
字段,然后将令牌中的aud
设置为客户id
和观众id
的数组,但这感觉就像是说该令牌对这两个观众都有效,这让我觉得我应该添加一个名为client
的自定义声明,专门声明此令牌是为特定客户机创建的
我没有在OAuth登录请求中遇到任何在线实现同时包含客户端id
和观众id
,也没有看到客户端
的保留声明
我是不是遗漏了什么
在JWT中具体说明不同的客户id
和受众id
的最佳实践是什么?JWT的受众是资源服务器,因为资源服务器是处理令牌的地方,即验证、检查和处理令牌的地方。从RFC 7519,:
“aud”(受众)声明确定了JWT的接收者
为……准备的。拟处理JWT的每个委托人必须
在受众声明中确定自己的价值。
[…]
受众价值观的解释通常是特定于应用的。
[……]
因此,最佳实践是,aud
应该识别资源服务器
客户机只是令牌的提交人,使用azp
(授权提交人)声明是最佳实践(即在OpenID Connect和一些新兴的OAuth 2.0 exension草稿中)。发件人:
azp
可选。授权方-ID令牌所属的一方
发布。如果存在,它必须包含此服务器的OAuth 2.0客户端ID
聚会。仅当ID令牌具有单个
受众价值,且该受众与授权受众不同
聚会。
[……]
因此,最佳实践是azp
识别客户。然后在客户的初始登录请求中包含观众id
,指示他们请求访问的观众?可以使用范围
概念(和请求参数)间接创建这种关系;这比范围和资源服务器之间的一对一映射具有更大的灵活性;通常,作用域为访问权限建模:作用域可以映射到资源服务器,但也可以映射到由资源服务器或资源服务器集合保护的特定资源