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

Azure中用.NET Core验证外部租户OAuth令牌遇AADSTS700222错误求助

解决跨Azure AD租户令牌验证的AADSTS700222错误

错误原因分析

你遇到的AADSTS700222错误核心是方向错配:联邦凭证(Federated Credentials)的作用是让非Azure AD身份提供商(比如GitHub Actions、AWS IAM角色、Kubernetes服务账户)的凭证换取Azure AD令牌,而非用于跨Azure AD租户验证令牌。用Azure AD自身颁发的令牌走联邦身份流,必然触发该错误。

正确解决方案:配置多租户应用验证外部租户令牌

要验证外部Azure AD租户的Bearer令牌,无需使用联邦凭证,按以下步骤操作:

  • 将API端应用注册设为多租户
    在Azure门户的应用注册中找到你的API应用:

    1. 进入「概述」页面,修改「支持的账户类型」为任何组织目录中的账户(任何Azure AD目录 - 多租户)
    2. 保存更改后,应用将接受来自所有Azure AD租户的令牌
  • 调整令牌验证逻辑
    确保代码兼容多租户场景:

    • 验证iss(颁发者)字段时,不要硬编码自身租户ID,需接受格式为https://login.microsoftonline.com/{外部租户ID}/v2.0(v2端点)或https://login.microsoftonline.com/{外部租户ID}/(v1端点)的颁发者
    • 推荐使用Microsoft Identity Web库(.NET)或对应语言的MSAL库,这类库会自动处理多租户令牌验证,示例代码片段:
      // .NET中使用Microsoft Identity Web配置多租户验证
      builder.Services.AddMicrosoftIdentityWebApiAuthentication(builder.Configuration)
          .EnableTokenAcquisitionToCallDownstreamApi()
          .AddInMemoryTokenCaches();
      // 配置文件中设置"AzureAd:Instance": "https://login.microsoftonline.com/","AzureAd:TenantId": "common"
      
  • 外部租户客户端配置(若需调用API)
    如果外部租户的客户端要调用你的API,其租户管理员需完成:

    1. 在自身租户的应用注册中,添加你的API权限
    2. 完成管理员同意(若API权限要求)

关键注意点

  • 若API只需接受特定外部租户的令牌,可在验证逻辑中添加租户ID白名单,拒绝未授权租户的令牌
  • 切勿混淆「联邦凭证」和「多租户应用」的用途:联邦凭证面向非AAD身份,多租户应用面向跨AAD租户的身份验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:33:12