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

Azure AD作为ADFS时出现IDX10214受众验证失败如何解决

问题根因

spn:前缀是Azure AD对服务主体类SAML依赖方的默认Audience生成规则:当你在Azure AD中配置的应用标识符值为xyz时,返回的SAML断言Audience节点值会自动拼接spn:前缀,最终值为spn:xyz,和你代码中配置的不带前缀的合法受众值不匹配,就会抛出IDX10214 Audience校验失败异常。

排查前置操作

先临时开启PII日志拿到明确的字段值,避免凭猜测配置:
在程序启动初始化阶段加入如下代码:

IdentityModelEventSource.ShowPII = true;

复现异常后,日志会直接打印返回的实际Audience值、当前配置的合法Audience值,确认值匹配逻辑后请及时关闭该配置,生产环境长期开启会泄露敏感身份信息。

可落地方案
  • 方案1(推荐,改动最小):代码侧补充合法Audience值
    不要单独配置单值的ValidAudience,改用ValidAudiences集合同时加入带前缀和不带前缀的两个值,兼容Azure AD的返回格式,示例配置:
    services.AddAuthentication()
        .AddSaml2(options =>
        {
            // 原有issuer、签名证书、回调路径等配置保持不变
            options.TokenValidationParameters.ValidAudiences = new List<string>
            {
                "xyz",
                "spn:xyz"
            };
        });
    
  • 方案2:调整Azure AD侧配置取消前缀拼接
    Azure AD仅对不带协议头的纯字符串标识符自动加spn:前缀,你可以进入Azure AD对应企业应用的SAML配置页,把「基本SAML配置」下的「标识符(实体ID)」从纯字符串xyz修改为带协议头的格式,比如api://xyz或者https://your-domain.com/saml-app,保存配置等待最多5分钟缓存过期后,返回的Audience值会和你配置的标识符完全一致,此时代码侧配置对应值为ValidAudience即可正常校验。
避坑说明

禁止通过设置TokenValidationParameters.ValidateAudience = false关闭Audience校验绕过问题,该操作会让SAML断言的受众校验逻辑失效,存在令牌被跨应用冒用的安全风险。
如果修改配置后仍返回旧格式断言,清理当前站点的身份Cookie、重新发起登录请求即可,Azure AD配置变更存在短时间的缓存周期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:27:52