切换AAD B2C登录至工作账户时遇AADB2C90238错误求助
在配置Azure AD B2C自定义策略的OpenIdConnect登录时,尝试从Microsoft个人账户(login.live.com)切换到工作/学校账户(login.microsoftonline.com),原个人账户登录功能正常。仅修改ProviderName和Metadata地址后,使用工作账户登录时触发错误:
AADB2C90238 provided token does not contain valid issuer
原正常运行的Microsoft个人账户策略片段:
修改后的工作账户策略片段:
已替换ProviderName和Metadata地址为login.microsoftonline.com,但问题仍未解决。
这个错误源于Azure AD B2C无法验证工作账户Token的发行方(Issuer),仅修改Metadata地址和ProviderName不足以解决问题,需完成以下配置:
修正Metadata地址格式
工作账户的Metadata地址必须指定租户范围,格式应为:https://login.microsoftonline.com/{你的租户ID}/v2.0/.well-known/openid-configuration若允许所有工作/学校账户登录,可使用
https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration,不能仅使用login.microsoftonline.com根地址。配置发行方验证规则
在自定义策略的<ClaimsProvider>下的<TechnicalProfile>节点中,添加Metadata配置指定合法发行方:<Metadata> <!-- 保留已有元数据 --> <Item Key="ValidIssuer">https://login.microsoftonline.com/{你的租户ID}/v2.0</Item> <!-- 若支持多租户,改用匹配规则 --> <!-- <Item Key="IssuerPattern">^https://login.microsoftonline.com/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/v2.0$</Item> --> </Metadata>同步声明映射配置
工作账户ID Token返回的声明与个人账户存在差异,检查<OutputClaims>中映射的email、given_name等声明是否存在,同时确认<OutputClaimsTransformations>未依赖个人账户特有的声明字段。检查工作租户应用注册
在工作账户对应的Azure AD租户应用注册中,确认已配置正确的重定向URI(指向B2C端点),并授予openid、profile、email等必要API权限。验证Metadata返回的Issuer值
直接访问配置的Metadata地址,查看issuer字段的完整值,确保与策略中ValidIssuer或IssuerPattern的配置完全匹配(大小写、路径均不能出错)。
内容的提问来源于stack exchange,提问作者dddd9999

