托管服务标识必须配置为使用认证令牌策略



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

当我向APIM发出请求时,我在应用程序洞察力中得到以下错误:

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

在后端,我使用Owin的Windows Azure Active Directory承载身份验证。

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中需要更改的内容。如果你能告诉我正确的方向,我将不胜感激。

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

你所做的只是一个变通方法。您从用户管理的身份更改为系统管理的身份。如果您更希望使用用户管理的身份,则需要

  1. 进入azure portal的api管理服务
  2. 点击"管理的身份";
  3. 它将显示您当前为该api管理服务配置的系统分配和用户分配的管理身份。
  4. 转到用户分配选项卡,添加给你错误的身份(对应于client-id="11111111-1111-1111-1111-1111111111 "从您的示例代码)

最新更新