托管服务身份必须配置为使用身份验证令牌策略

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

我正在尝试让我的后端 API 验证请求来自使用托管身份的 Azure APIM,以前这是通过证书身份验证完成的,但出于各种原因我希望改变它。

当我向 APIM 发出请求时,应用程序洞察中出现以下错误。

Managed service identity must be configured to use authentication-token policy.

在后端,我使用的是 Owin 的 Windows Azure Active Directory Bearer Authentication。

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions
    {
        Tenant = "https://tennant.co.uk/AzureADDAuth",
        TokenValidationParameters = new TokenValidationParameters
        {
            ValidAudience = "11111111-1111-1111-1111-111111111111"
        },
    });

在APIM中入站政策如下

<authentication-managed-identity resource="https://tennant.co.uk/AzureAADAuth" client-id="11111111-1111-1111-1111-111111111111" output-token-variable-name="msi-access-token" ignore-error="false" />
<set-header name="Authorization" exists-action="override">
    <value>@("Bearer " + (string)context.Variables["msi-access-token"])</value>
</set-header>

我发现错误消息很模糊,而且我没有在网上找到任何帮助,所以我不确定我需要做什么来设置这个配置。我浏览了有关此主题的多个文档和博客文章,但找不到有关 Azure Active Directory 中要更改的内容的任何信息。如果你能指出我正确的方向,我将不胜感激。

azure azure-api-management azure-managed-identity
2个回答
2
投票

我通过从 APIM 入站策略中删除客户端 ID 来解决这个问题。


0
投票

你所做的只是一种解决方法。 您已从用户管理的身份更改为系统管理的身份。 如果您想让它与用户管理的身份一起使用,您需要

  1. 去 azure portal 上的 api 管理服务。
  2. 单击左窗格中安全设置下的“托管身份”选项卡。
  3. 它将显示您当前为此 api 管理服务配置的系统分配和用户分配的托管身份。
  4. 转到用户分配的选项卡并添加给您错误的身份(与您的示例代码中的 client-id="11111111-1111-1111-1111-111111111111" 对应的身份)
© www.soinside.com 2019 - 2024. All rights reserved.