我们有两个 RestAPI,托管在 azure Kubernetes 中。这些 API 使用 Azure 应用程序通过 SSO 对用户进行身份验证。我们计划从一个 api(连接到其自己的应用程序)获取令牌,并在另一个 API(连接到另一个应用程序)中使用它。有办法实现这个目标吗?目前,api1 中生成的令牌在 api2 中无效,反之亦然。对于 API,我们使用此配置。希望我的问题很清楚,如果需要进一步说明,请告诉我。
用户模拟和范围(更多详细信息请参见此处)
我们正在使用access_token和oath2 这与我的非常相似,但我们不打算访问Azure资源,所以不确定这个问题的答案是否仍然适用于我们的问题。
我遇到了这个,但不确定这是否是最好的解决方案,甚至是一个解决方案。
需要澄清的是,所有 Azure 应用程序和 API 都位于一个租户中。
我同意@Jack Jiang,你可以利用代表流程来实现你的场景。
我为示例创建了三个 Azure AD 应用程序
webapi1
webapi2
webapi3
。
在
webapi1
中,我添加了以下Api权限:
在
webapi2
中,我添加了以下Api权限:
我通过 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
使用上面生成的访问令牌,我尝试调用
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
否则,您可以利用客户端凭证流程来调用Api。
参考: