Azure API Management + Azure Function and managed identity



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

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

我有两个问题:

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

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

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

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

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

编辑

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

2-然后转到 Azure 函数应用中的平台功能,然后单击"身份验证/授权"。

3-选择Azure Active Directory作为身份验证提供程序,管理模式为"express"。

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

您需要在 apim 所需的资源中添加 URL。如果计划使用委派流。若要检查问题是否与 url 注册有关,可以改用 AppId。这至少会告诉您是否可以检索令牌。

最新更新