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

如何区分Azure AD B2C与Azure AD令牌并完成API端验证?

区分Azure AD与Azure AD B2C令牌并验证的方法

不用让调用方额外传标识,直接从令牌里就能区分

你可以从JWT令牌的以下关键字段直接判断是Azure AD还是B2C的令牌:

  • iss(签发者)字段:
    • Azure AD令牌的签发者是https://login.microsoftonline.com/{租户ID}/v2.0这种格式,域名是通用的login.microsoftonline.com
    • Azure AD B2C令牌的签发者是https://{你的B2C租户名}.b2clogin.com/{租户ID}/{策略名}/v2.0/,里面会带专属的B2C域名(xxx.b2clogin.com)和具体的策略名称,一眼就能和AD的区分开
  • tid(租户ID)字段:
    虽然两者都有租户ID,但搭配iss字段的域名就能100%确定类型,核心还是看iss就行

验证流程怎么适配

你接着现在用JWKS验证B2C令牌的路子来就行,只要根据令牌类型换对应的参数:

  1. 先解析JWT的头部和载荷,把iss字段提出来
  2. 根据iss判断类型:
    • 如果是Azure AD令牌:用Azure AD的JWKS端点https://login.microsoftonline.com/common/discovery/v2.0/keys,租户ID直接从iss里拿
    • 如果是B2C令牌:用你对应的B2C租户JWKS端点,格式是https://{B2C租户名}.b2clogin.com/{B2C租户名}.onmicrosoft.com/{策略名}/discovery/v2.0/keys,租户名、策略名都能从iss字段里提取出来
  3. 签名验证、过期时间检查这些核心逻辑,直接复用你现在验证B2C令牌的代码就行,只需要替换JWKS端点和要校验的签发者值

额外提醒

  • 验证的时候一定要严格校验iss的完整值,别让伪造的令牌蒙混过去
  • 如果你的API支持多种B2C策略,记得从iss里提取具体策略名,对应到正确的JWKS端点
  • 完全不用让调用方额外传令牌类型,靠令牌自己的字段就能搞定所有区分和适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:35:20