Azure B2C自定义密码修改策略有活跃会话时报用户名或密码无效如何解决
Azure B2C 自定义密码修改策略活跃会话报错排查方案
根因说明
活跃会话场景下触发密码修改时,系统不会重复要求用户输入用户名,旧密码校验步骤未从会话中读取到合法的用户名标识,仅提交了旧密码导致身份校验失败,触发The username or password provided in the request are invalid报错。
排查步骤
- 检查会话声明持久化配置:定位密码修改用户旅程中的会话读取步骤,确认
signInName、userPrincipalName、objectId三个核心声明已设置为从会话中提取并向下游步骤传递,同时在信赖方配置中确认上述声明未被排除在持久化列表外。 - 核对旧密码校验技术配置:找到
login-NonInteractive技术配置文件,检查InputClaims节点是否配置了正确的用户名声明映射:
<InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="username" Required="true" /> <InputClaim ClaimTypeReferenceId="oldPassword" PartnerClaimType="password" Required="true" />
禁止将signInName的DefaultValue设置为用户输入项,必须从已认证的会话声明中取值。
- 验证密码写入步骤配置:定位
LocalAccountWritePasswordChangeUsingObjectId技术配置文件,确认objectId输入声明的来源为会话中的已认证声明,未被设置为用户收集项。 - 兜底测试:可在信赖方配置中临时添加
SessionManagementType="None"关闭会话复用,测试全场景下密码修改是否正常,若关闭会话后无报错,可完全确认问题来源于会话声明传递缺失。
内容的提问来源于stack exchange,提问作者Ramya
相关产品推荐
相关产品推荐

