Azure B2C自定义策略JIT v2迁移场景下未迁移用户密码重置后认证失败
问题根因定位与修复方案
你遇到的AADB2C90037错误本质是未迁移用户完成密码重置+迁移流程后,B2C用户旅程没有将令牌签发所需的必填声明传递到信赖方,导致返回给站点的OIDC响应不符合协议规范。已迁移用户在密码重置第一步就通过AAD-UserReadUsingEmailAddress拿到了所有必填声明,所以流程正常。
具体修复步骤
1. 补全
你当前的迁移技术配置在创建完B2C新用户后,没有把新生成的用户核心标识字段回写到声明袋中。需要为该技术配置增加以下输出声明,确保创建用户后同步拿到必填字段:AAD-MigrateUserUsingLogonEmail技术配置的输出声明<OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" /> <OutputClaim ClaimTypeReferenceId="userPrincipalName" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" /> <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" /> </OutputClaims>2. 补全
你当前的密码重置第二页只声明了PasswordResetSecondPage技术配置的输出声明newPassword、reenterPassword两个输出字段,迁移完成后生成的objectId等核心声明没有被透出到后续流程。需要在该技术配置的OutputClaims节点下补充:<OutputClaim ClaimTypeReferenceId="objectId" /> <OutputClaim ClaimTypeReferenceId="userPrincipalName" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" /> <OutputClaim ClaimTypeReferenceId="email" />3. 校验信赖方策略的输出声明
确认密码重置对应的信赖方策略的输出声明列表,包含objectId、sub、email、userPrincipalName等OIDC协议必填字段,没有遗漏。4. 对齐登录迁移流程的声明逻辑
你提到未迁移用户登录场景流程正常,可以直接对比登录迁移链路的技术配置输出声明,确保密码重置迁移链路输出的声明集合和登录链路完全一致,避免OWIN中间件校验时缺少期望字段。
你可以通过Azure B2C的Application Insights日志查看用户旅程的声明流转过程,确认走完迁移步骤后是否确实生成了必填的用户标识字段,进一步验证修复效果。
内容的提问来源于stack exchange,提问作者Krzysztof Tryc
相关产品推荐
相关产品推荐

