JSON Web 令牌中的客户端 ID 或多个受众
Client ID or Multiple Audiences In JSON Web Token
我在我的应用程序中使用 JWT 实现 OAuth 2.0,但无法决定将什么设置为我的 aud
声明。用户将 "login" 通过我的身份验证服务器访问我的客户端,以访问我的 API (资源)服务器。我希望我的令牌仅对特定客户端和特定 API.
有效
从我的客户端登录时,我在请求中不包含 client_id
,但在 most implementations I've found 中,aud
设置为 client_id
。我倾向于在登录请求中包含客户 audience_id
字段,然后将令牌中的 aud
设置为 client_id
和 audience_id
的数组,但是感觉 就像它只是意味着该令牌对这两个 audiences
都有效,这让我觉得我应该添加一个名为 client
的自定义声明来具体说明此令牌是为特定客户创建的。
我没有在网上遇到任何在 OAuth 登录请求中同时包含 client_id
和 audience_id
(s) 的实现,我也没有看到 client
的保留声明in the spec.
我是不是漏掉了什么?
在 JWT 中具体说明不同的 client_id
和 audience_id
的最佳做法是什么?
JWT 的受众是资源服务器,因为这是处理令牌的地方,即验证、检查和采取行动的地方。来自 RFC 7519,https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3:
The "aud" (audience) claim identifies the recipients that the JWT is
intended for. Each principal intended to process the JWT MUST
identify itself with a value in the audience claim.
[...]
The interpretation of audience values is generally application specific.
[...]
所以最佳做法是 aud
应该识别资源服务器。
客户只是令牌的提交者,最佳做法(即在 OpenID Connect 和一些新兴的 OAuth 2.0 扩展草案中)使用 azp
(授权提交者)进行声明。来自 http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken :
azp
OPTIONAL. Authorized party - the party to which the ID Token was
issued. If present, it MUST contain the OAuth 2.0 Client ID of this
party. This Claim is only needed when the ID Token has a single
audience value and that audience is different than the authorized
party.
[...]
所以最佳做法是 azp
识别客户。
我在我的应用程序中使用 JWT 实现 OAuth 2.0,但无法决定将什么设置为我的 aud
声明。用户将 "login" 通过我的身份验证服务器访问我的客户端,以访问我的 API (资源)服务器。我希望我的令牌仅对特定客户端和特定 API.
从我的客户端登录时,我在请求中不包含 client_id
,但在 most implementations I've found 中,aud
设置为 client_id
。我倾向于在登录请求中包含客户 audience_id
字段,然后将令牌中的 aud
设置为 client_id
和 audience_id
的数组,但是感觉 就像它只是意味着该令牌对这两个 audiences
都有效,这让我觉得我应该添加一个名为 client
的自定义声明来具体说明此令牌是为特定客户创建的。
我没有在网上遇到任何在 OAuth 登录请求中同时包含 client_id
和 audience_id
(s) 的实现,我也没有看到 client
的保留声明in the spec.
我是不是漏掉了什么?
在 JWT 中具体说明不同的 client_id
和 audience_id
的最佳做法是什么?
JWT 的受众是资源服务器,因为这是处理令牌的地方,即验证、检查和采取行动的地方。来自 RFC 7519,https://www.rfc-editor.org/rfc/rfc7519#section-4.1.3:
The "aud" (audience) claim identifies the recipients that the JWT is
intended for. Each principal intended to process the JWT MUST
identify itself with a value in the audience claim.
[...]
The interpretation of audience values is generally application specific.
[...]
所以最佳做法是 aud
应该识别资源服务器。
客户只是令牌的提交者,最佳做法(即在 OpenID Connect 和一些新兴的 OAuth 2.0 扩展草案中)使用 azp
(授权提交者)进行声明。来自 http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken :
azp
OPTIONAL. Authorized party - the party to which the ID Token was issued. If present, it MUST contain the OAuth 2.0 Client ID of this party. This Claim is only needed when the ID Token has a single audience value and that audience is different than the authorized party.
[...]
所以最佳做法是 azp
识别客户。