Azure API管理+ Azure功能和托管身份

时间:2020-01-15 18:41:28

标签: azure azure-functions azure-api-management azure-managed-identity

我正在尝试通过使用托管身份从API管理实例调用Azure函数。 我已经为我的APIM实例设置了系统托管身份。 我已在Azure Function应用程序上为该身份授予了贡献者角色。 我还将App Service Authentication更改为AD。

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

我有两个问题:

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

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

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

2 个答案:

答案 0 :(得分:4)

您需要使用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功能应用程序中的平台功能,然后单击“身份验证/授权”。

3-选择Azure Active Directory作为身份验证提供程序,并选择管理模式“快速”。

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

答案 1 :(得分:0)

您需要在apim必需资源中添加url。如果您打算使用委托流。要检查问题是否与url注册有关,您可以改用AppId。这至少会告诉您是否可以检索令牌。