Oauth JSON Web令牌中的客户端ID或多个访问群体

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的数组,但这感觉就像是说该令牌对这两个观众都有效,这让我觉得我应该

我在应用程序中使用JWT实现OAuth 2.0,在决定将什么设置为我的
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
,指示他们请求访问的观众?可以使用
范围
概念(和请求参数)间接创建这种关系;这比范围和资源服务器之间的一对一映射具有更大的灵活性;通常,作用域为访问权限建模:作用域可以映射到资源服务器,但也可以映射到由资源服务器或资源服务器集合保护的特定资源