Azure B2C 如何防止每天多次更改密码

Azure B2C How to prevent more than one password change per day

我正在使用 B2C 自定义策略,我想防止用户每天多次更改密码。是否可以获取上次更改密码的日期并在自定义策略中执行此检查?

看看这个策略,它使用在用户对象上存储日期时间的概念来做一些条件控制:
https://github.com/azure-ad-b2c/samples/blob/master/policies/force-password-reset-after-90-days


https://github.com/azure-ad-b2c/samples/tree/master/policies/mfa-absolute-timeout-and-ip-change-trigger

密码更改成功后,您可以将日期存储在用户对象扩展属性中。然后,当用户尝试重置密码时,检查此时间戳并使用 claimsTransform 与 24 小时进行比较。将布尔结果存储在声明中。这可以使用 claims transformation which calls a dateComparison transform 类型的编排步骤来完成。

您可以执行此计算并在显示密码重置屏幕的自我断言技术配置文件之前设置声明值。然后在用户验证他们的电子邮件后,您可以使用输出声明转换来确保这一点 boolean is false,否则使用元数据项抛出错误,如下面在您收集电子邮件的自我断言技术配置文件中所示:

  <Metadata>
    <Item Key="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">Custom error message if account is disabled.</Item>
  </Metadata>