You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure APIM与Function Apps:仅允许APIM通过用户分配标识访问应用

问题:使用托管标识授权APIM访问Function Apps的配置困惑

背景

原本通过函数密钥的后端连接访问Function Apps,现计划改用托管标识实现APIM的隐式授权访问,并拒绝直接调用Function Apps。

已完成的配置步骤

  • 创建用户分配托管标识(User Managed Identity)
  • 为该标识分配所有目标Function Apps的Contributor角色
  • 将此标识关联到APIM
  • 更新APIM的API策略,添加以下配置:
<authentication-managed-identity
   resource="${function_id}"
   output-token-variable-name="msi-access-token"
   ignore-error="false" 
   client-id="#{function_access_client_id}"
/>

其中参数说明:

  • function_id:曾使用Function Apps的资源ID,也尝试过填入https://management.azure.com/
  • function_access_client_id:用户分配托管标识的客户端ID

遇到的配置问题

  • 当function_id使用https://management.azure.com/时,能成功获取令牌,但该令牌无法通过Function Apps的身份验证
  • 当function_id使用Function Apps的资源ID时,触发如下错误:

"errorResponse": "System.InvalidOperationException: [MSAL] Authentication failed for ClientId: Certificate: AuthorizationUrl: https://login.windows.net/ resourceId: /subscriptions//resourceGroups//providers/Microsoft.Web/sites/ ---> Microsoft.Identity.Client.MsalServiceException: AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid. The scope /subscriptions//resourceGroups//providers/Microsoft.Web/sites//.default is not valid.

另一个特殊情况:将client-id设为Function Apps身份验证提供程序的ID时,配置能正常工作,但移除APIM的用户分配托管标识后,会因APIM未启用托管标识而失败。

核心疑问

当前可用的配置逻辑存在矛盾:

  1. 用户分配托管标识用于授权访问应用,但它生成的JWT并未被实际使用
  2. Function Apps必须配置JWT身份验证
  3. APIM策略需要引用Function Apps身份验证配置中的客户端ID

这种配置虽能运行,但逻辑怪异,是否存在配置错误?用户分配托管标识在此场景中的真正作用是什么?


内容的提问来源于stack exchange,提问作者Jake Boomgaarden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 05:50:35