在 Azure 中使用托管身份实现委派权限:检索用于用户模拟的令牌

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

我正处于不知道如何继续的情况。在我们的应用程序环境中,我们正在为微服务实施托管身份。目前,我正在开发一个 API (API-1),根据系统分配的托管身份授予对数据库和其他资源的访问权限。但是,此 API 还需要从具有委派 user_impersonation 权限的另一个 API (API-2) 检索其部分数据。

我可以使用以下代码代表用户在 API-1 中检索令牌:

    var builder = ConfidentialClientApplicationBuilder
        .Create(clientInformation.ClientId)
        .WithAuthority($"https://login.microsoftonline.com/{clientInformation.TenantId}")
        .WithClientSecret(clientSecret);

    var userAssertion = new UserAssertion(currentAccessToken, "urn:ietf:params:oauth:grant-type:jwt-bearer");

    var application = builder.Build();
    var onBehalfOfBuilder = application.AcquireTokenOnBehalfOf(scopes, userAssertion);
    var authenticationResult = await onBehalfOfBuilder.ExecuteAsync(cancellationToken).ConfigureAwait(false);
    return authenticationResult.AccessToken;

但是,此代码使用 AppRegistration (ClientId/ClientSecret),并且最大限度地减少 ClientSecrets 的使用正是我们实施托管身份的目标。是否有一段代码或配置可以让我们利用委托的 user_imeronate 权限代表用户的托管身份检索令牌?我唯一能找到的是使用 PowerShell 脚本在托管身份上设置应用程序权限。

问题 1:是否可以将委派权限分配给托管身份?

问题 2:我尝试使用委派权限从后端 API 检索令牌是否犯了概念错误?

azure .net-6.0 azure-ad-msal azure-managed-identity msal
1个回答
0
投票

问题 1:是否可以将委派权限分配给托管身份?

没有。

问题 2:我尝试使用委派权限从后端 API 检索令牌是否犯了概念错误?

不一定,代流就是针对这种场景的。 托管身份不支持代表。 您只能从托管身份端点请求特定资源的令牌,无法指定您收到的令牌。

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