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

APIM使用validate-jwt校验用户托管标识JWT报IDX10501如何解决

问题解决步骤

根因说明

该报错是APIM的JWT校验配置和用户托管标识生成的令牌属性不匹配导致,核心问题集中在颁发者配置不一致、签名密钥拉取端点不匹配、声明校验值未更新三类。

修复步骤

1. 先确认令牌实际属性

把用户托管标识生成的JWT令牌拷贝到本地解析,确认以下字段值:

  • iss(颁发者):判断是v1版本https://sts.windows.net/{你的租户ID}/还是v2版本https://login.microsoftonline.com/{你的租户ID}/v2.0
  • aud(受众):确认值为https://management.azure.com
  • oid(对象ID):确认是用户托管标识的对象ID(注意不是客户端ID)
  • 头部的kid字段:确认是否有有效值

2. 修正APIM validate-jwt策略

你当前策略存在OpenID配置端点和颁发者不匹配的问题,请按解析出来的令牌属性对齐配置:

<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Invalid or Expired token" require-expiration-time="true" require-signed-tokens="true">
    <!-- 若令牌iss是v1版本,就用v1的OpenID配置地址,否则保持v2地址 -->
    <openid-config url="https://login.microsoftonline.com/{你的租户ID}/.well-known/openid-configuration" />
    <audiences>
        <audience>https://management.azure.com</audience>
    </audiences>
    <issuers>
        <!-- 此处填你解析出来的iss字段的完整值,和令牌完全一致 -->
        <issuer>https://sts.windows.net/{你的租户ID}/</issuer>
    </issuers>
    <required-claims>
        <claim name="oid" match="any">
            <!-- 替换为你用户托管标识的对象ID,不是原来的系统托管标识ID -->
            <value>{用户托管标识的对象ID}</value>
        </claim>
    </required-claims>
</validate-jwt>

3. 修复令牌生成逻辑异常

如果修正策略后仍报kid为空的错误,升级你函数应用引用的Azure.Identity NuGet包到最新稳定版,旧版本包存在用户托管标识生成令牌头部信息缺失的已知问题。

验证

修改完成后重新请求,令牌即可正常通过APIM校验。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:57:00