Azure B2C自定义策略重置密码后仍提示密码过期问题
Azure B2C自定义策略密码重置异常问题
背景信息
- 正在8月31日旧URL弃用前,从旧版Azure B2C策略迁移至新版策略
- 使用含句点的本地账户用户名登录,因默认验证正则不支持,基于示例创建了仅启用用户名、禁用邮箱登录的自定义策略,修改正则规则允许用户名包含句点并支持更长长度,多数测试账户可正常登录
异常问题
- 某测试账户登录时持续提示:
The password has expired. - 通过Azure B2C门户执行密码重置操作(旧版策略下此操作可解决过期问题),但重置后登录仍显示相同过期提示
排查信息
- 登录日志确认该账户密码状态为已过期
- 审核日志确认密码已完成重置,账户
Block sign in设置为no - 登录诊断未提供有效排查线索
已尝试操作与疑问
- 已上传
PasswordReset_UsernameOrEmail策略,但问题未解决 - 怀疑问题出在
TrustFrameworkExtensions_UsernameOrEmail策略配置,或遗漏了触发新密码设置表单的相关策略逻辑
相关策略代码(TrustFrameworkExtensions_UsernameOrEmail中的用户旅程)
<UserJourney Id="PasswordReset_UsernameOrEmail"> <OrchestrationSteps> <OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="LocalAccountSignUp" TechnicalProfileReferenceId="SelfAsserted-LocalAccountLookup-Combined-PwdReset" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="2" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="true"> <Value>isEmailBoolean</Value> <Value>True</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="VerifyEmailForUsernameForPwdReset" TechnicalProfileReferenceId="LocalAccountDiscoveryUsingUserNameAndValidateStrongAuthenticationEmailAddress" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="3" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="true"> <Value>isEmailBoolean</Value> <Value>False</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="VerifyEmailAndPassword" TechnicalProfileReferenceId="LocalAccountEmail-PwdReset" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="4" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="NewCredentialsForEmailAcct" TechnicalProfileReferenceId="LocalAccountWritePasswordUsingObjectId" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="5" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="6" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" /> </OrchestrationSteps> <ClientDefinition ReferenceId="DefaultWeb" /> </UserJourney>
内容的提问来源于stack exchange,提问作者Gavin Ward
相关产品推荐
相关产品推荐

