多个azure应用程序如何使用相同的jwt令牌进行身份验证

问题描述 投票:0回答:1

我们有两个 RestAPI,托管在 azure Kubernetes 中。这些 API 使用 Azure 应用程序通过 SSO 对用户进行身份验证。我们计划从一个 api(连接到其自己的应用程序)获取令牌,并在另一个 API(连接到另一个应用程序)中使用它。有办法实现这个目标吗?目前,api1 中生成的令牌在 api2 中无效,反之亦然。对于 API,我们使用此配置。希望我的问题很清楚,如果需要进一步说明,请告诉我。

用户模拟和范围(更多详细信息请参见此处

我们正在使用access_token和oath2 与我的非常相似,但我们不打算访问Azure资源,所以不确定这个问题的答案是否仍然适用于我们的问题。

我遇到了这个,但不确定这是否是最好的解决方案,甚至是一个解决方案。

需要澄清的是,所有 Azure 应用程序和 API 都位于一个租户中。

azure authentication azure-active-directory jwt single-sign-on
1个回答
0
投票

我同意@Jack Jiang,你可以利用代表流程来实现你的场景。

我为示例创建了三个 Azure AD 应用程序

webapi1
webapi2
webapi3

webapi1
中,我添加了以下Api权限:

enter image description here

webapi2
中,我添加了以下Api权限:

enter image description here

我通过 Postman 使用以下参数生成了 webapi1

 的访问令牌:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token client_id:webapi1ClientId scope:api://webapi2ID/webapi2.read grant_type:authorization_code redirect_uri:https://jwt.ms code:code client_secret:ClientSecret

enter image description here

使用上面生成的访问令牌,我尝试调用

webapi3

 Api,如下所示:

https://login.microsoftonline.com/TenantID/oauth2/v2.0/token client_id:webapi2ClientID client_secret:ClientSecret grant_type:urn:ietf:params:oauth:grant-type:jwt-bearer assertion:access_token_generatedabove requested_token_use:on_behalf_of scope:api://webapi3ID/webapi3.read

enter image description here

否则,您可以利用客户端凭证流程来调用Api。

参考:

Microsoft 身份平台和 OAuth2.0 代表流程 - Microsoft Entra

© www.soinside.com 2019 - 2024. All rights reserved.