B2C自定义密码重置策略完成后新标签登录强制进入忘记密码流问题
Azure AD B2C 密码重置后强制跳转重置流程问题修复方案
问题根因
该异常核心是密码重置流程完成后上下文会话标记未正确清理,或多套策略会话配置存在冲突,触发条件如下:
- 密码重置策略执行完成后,未清除浏览器残留的重置流程上下文标记,B2C接收到新登录请求时会误判用户仍处于未完成的重置流程中
- 两套登录策略的会话cookie作用域配置重叠,跨应用访问时会话标记互相干扰
- 密码重置流程的最终步骤未显式退出重置上下文,直接返回应用令牌导致会话状态停留在重置流程
修复步骤
自定义策略场景
- 密码重置策略添加会话清理配置
在密码重置策略的信赖方(RelyingParty)节点OutputClaims段添加重置完成标记:
<OutputClaim ClaimTypeReferenceId="resetPasswordCompleted" DefaultValue="true" AlwaysUseDefaultValue="true" />
在密码重置用户旅程的最后一个编排步骤新增会话清理声明交换:
<OrchestrationStep Order="替换为你当前最后一步的序号+1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="ClearResetPasswordSession" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" /> </ClaimsExchanges> </OrchestrationStep>
对应密码写入技术配置添加属性清理规则:
<PersistedClaim ClaimTypeReferenceId="extension_forcePasswordReset" DefaultValue="false" AlwaysUseDefaultValue="true" />
- 隔离多套策略的会话作用域
分别给两套登录策略的RelyingParty下的UserJourneyBehaviors节点配置独立的会话参数:
第一套应用对应策略:
<SingleSignOn Scope="Application" CookieName="App1_Login_SSO" />
第二套应用对应策略:
<SingleSignOn Scope="Application" CookieName="App2_Login_SSO" />
同域名部署的应用可额外添加CookiePath参数进一步隔离会话范围。
3. 重置完成后显式退出重置上下文
修改密码重置流程的最终编排步骤,不要直接返回令牌到应用,改为跳转到对应应用的登录策略发起端点,彻底重置会话上下文。
用户流场景
进入密码重置用户流的「会话行为」配置页,开启「密码重置完成后终止当前会话」选项即可。
验证规则
修改完成后按以下步骤验证修复效果:
- 触发密码重置流程,完成密码修改操作
- 关闭当前标签页,新开标签页访问应用地址发起登录
- 确认直接进入登录凭证输入页面,不会自动跳转密码重置流程
- 两个应用分别执行上述操作,确认互不干扰
内容的提问来源于stack exchange,提问作者Bnd10706
相关产品推荐
相关产品推荐

