Microsoft Entra ID 应用程序中的用户模拟

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

我有 3 个不同的应用程序注册应用程序。所有都是后端 API,并使用 azure-identity 模块进行身份验证。为了提高安全性,我们使用托管身份通过 KeyVault 和其他 Azure 服务进行身份验证,以避免客户端机密。我正在尝试弄清楚如何代表用户对 Azure 中的其他应用程序进行身份验证 + 我需要代表用户访问 Azure DevOps API。

我已经尝试过并希望能起作用,但没有成功: 在我的

App1->API Permissions
-> 添加了 Azure DevOps user_impersonation 权限。

使用

az cli
我获得了 App1 的访问令牌:
az account get-access-token --resource "api://<app1-client-id>"

我可以使用令牌访问我的 App1 API,没有问题,但我无法将相同的令牌传递给 Azure DevOps API,而只能从 API 返回“Azure DevOps Sing in”页面。

我是否缺少某些配置或概念上做错了什么?我是否需要将现有令牌交换为可用于 Azure DevOps 的另一个令牌?

类似问题:如何冒充其他Azure AD App的用户?

oauth-2.0 oauth azure-web-app-service microsoft-entra-id
1个回答
0
投票

通过

Azure DevOps
user_impersonation
App1->API Permissions
添加到您的应用程序只是第一步。这将允许您将您的
App1
用户令牌交换为
Azure DevOps
用户令牌。

代币交换需要通过代表流程进行。我认为这个代币交换请求的范围需要是

499b84ac-1321-427f-aa17-267ca6975798/.default
。请参阅 Azure DevOps 文档中的本节

注意:此令牌交换必须使用共享密钥进行。还有一种记录的方法可以使用 jwt-bearer 客户端断言交换令牌,但尝试交换用户令牌失败,并显示错误代码AADSTS700229。请参阅此 GitHub 问题

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