Azure API 管理 + Azure 函数和托管标识

Dav*_*IER 4 azure azure-api-management azure-functions azure-managed-identity

我正在尝试使用托管标识从 API 管理实例调用 Azure 函数。我已经为我的 APIM 实例设置了系统管理标识。我已在 Azure Function App 上向此身份授予贡献者角色。我还将应用服务身份验证更改为 AD。

现在我正在尝试从 API 调用该函数。

我有两个问题:

  1. 第一个:当我使用身份验证管理身份策略获取令牌时,在使用受众https://myfunctionapp.azurewebsites.net时出现错误。AD 告诉我这个应用程序没有在租户中注册
  2. 第二:如果我检索了https://management.azure.com的令牌,我得到了一个令牌,但我收到了来自 Azure 函数的 401 Unauthorized 错误。

也许我只是想在错误的受众上获取令牌,但不幸的是,文档中没有列出功能的受众(例如,对于服务总线,有一个通用的 URI 可供使用,也用于 KeyVault,...) .

我想我可能错过了图片中的某些内容...谢谢。

Thi*_*dio 5

您需要使用该authentication-managed-identity策略通过 API 管理服务的托管标识向后端服务进行身份验证。

https://docs.microsoft.com/en-us/azure/api-management/api-management-authentication-policies#ManagedIdentity

编辑

1-在 Azure AD 上的 APIM 应用程序中,获取为企业应用程序分配的应用程序 ID。

2-然后转到 Azure Function App 中的平台功能,然后单击身份验证/授权。

3-选择Azure Active Directory作为身份验证提供者,管理模式为“express”。

4-返回到身份验证管理身份策略,将步骤 1 中的应用程序 ID 设置为资源。

  • 根据这个答案,我创建了带有说明的简短帖子:https://kalcik.net/2020/04/15/use-management-identity-in-azure-api-management-to-authenticate-with-an-azure-function / (4认同)
  • 应该使用应用程序 ID 而不是对象 ID (2认同)