如何使用OIDC搭建多租户Azure AD SSO并解决BAD ISSUER报错
Azure多租户应用注册OIDC签发者不匹配问题解决方案
首先明确结论:该报错属于多租户应用的预期设计,既不是配置遗漏,也不是Azure不符合OIDC标准。

问题根因
/common是Azure AD提供的多租户聚合端点,仅用于路由不同租户的认证请求,本身不承担令牌签发职能:当用户使用企业账号登录时,Azure会自动跳转至用户所属租户的认证端点完成身份校验,最终返回的令牌iss字段为用户所属租户的唯一标识,自然和common不匹配,触发签发者校验错误。
修复方案
- 如果你使用微软官方认证SDK(如MSAL):无需额外修改配置,SDK默认适配多租户场景的动态签发者校验逻辑,直接使用
/common端点即可自动完成不同租户令牌的合法性校验。 - 如果你自研OIDC认证流程:
- 关闭固定签发者校验规则,改为动态校验逻辑:先提取返回令牌中的iss字段,再拼接对应租户的OIDC元数据地址
https://login.microsoftonline.com/{租户ID}/v2.0/.well-known/openid-configuration,拉取对应租户的公钥和标准签发值完成校验 - 可额外添加租户允许列表逻辑,仅放行你授权的企业租户签发的令牌,避免未授权租户用户登录
- 关闭固定签发者校验规则,改为动态校验逻辑:先提取返回令牌中的iss字段,再拼接对应租户的OIDC元数据地址
标准符合性说明
OIDC核心规范未要求认证配置端点的路径必须和令牌签发者一致,该动态签发者设计是专门针对多租户身份服务场景的标准兼容实现,符合OIDC规范要求。
内容的提问来源于stack exchange,提问作者Chinaski
相关产品推荐
相关产品推荐

