You need to enable JavaScript to run this app. Azure AD B2C自定义策略忘记密码流程如何限制新密码不可与旧密码重复
优惠活动
大模型
产品
解决方案
定价
更多

Azure AD B2C自定义策略忘记密码流程如何限制新密码不可与旧密码重复

忘记密码流程实现新密码禁止与旧密码重复的可行方案

这类场景是完全可以落地的,根本不需要用户输入旧密码,依托Azure AD B2C自定义策略本身的声明流转能力就能闭环实现校验,具体配置如下:

核心实现逻辑

忘记密码流程的前置节点已经完成了用户所有权校验(邮箱/短信OTP验证通过),此时策略上下文已经持有对应用户的唯一ObjectId,完全有权限读取目录中存储的用户密码相关属性,不需要依托用户手动输入旧密码完成比对。

具体配置步骤

  • 调整忘记密码策略的用户旅程编排顺序
    在用户完成OTP校验、跳转到新密码设置页面之前,插入一步用户信息读取节点,复用自定义策略中已有的AAD-UserReadUsingObjectId技术配置,通过已拿到的用户ObjectId,从Azure AD B2C目录中拉取用户当前存储的密码哈希值:
    • 需要在该技术配置的输出声明列表中,显式添加passwordHash声明作为输出项;
    • 给该声明配置为内部流转属性,禁止将该值返回给前端页面、写入最终签发的用户令牌,避免敏感信息泄露。
  • 配置新密码提交环节的校验规则
    在设置新密码的自断言页面节点,新增自有的密码校验逻辑:
    • 调用Azure AD B2C本地账户提供的原生哈希计算能力,将用户输入的明文新密码,按照和目录存储完全一致的哈希算法,计算得到新密码的对应哈希值;
    • 新增声明转换规则:将计算得到的新密码哈希值,和之前从目录读取到的旧密码哈希值做严格等值匹配,如果两个值完全相等,直接抛出面向用户的校验提示“新密码不能与当前使用的密码相同,请更换其他密码”,阻断后续的密码更新提交流程。

常见配置踩坑点

  • 不要尝试做明文密码比对:Azure AD B2C目录中不会存储用户的明文密码,所有密码相关的存储值都是不可逆哈希值,明文比对的思路完全行不通。
  • 无需额外申请特殊权限:自定义策略使用的服务主体身份,本身就具备读取目录用户敏感属性的权限,只需要显式声明要读取的属性即可,不需要额外开通API权限。
  • 如果需要限制最近N次的密码重复逻辑,只需要在用户信息读取环节,将你之前存储在用户自定义扩展属性中的历史密码哈希列表一并读出,在校验环节遍历列表逐一匹配即可,整体实现逻辑和单次旧密码校验完全一致。

内容的提问来源于stack exchange,提问作者as1984

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 10:54:08