【发布时间】:2020-02-11 00:42:54
【问题描述】:
我正在使用 B2C 自定义策略,我希望防止用户每天多次更改密码。是否可以获取最后一次密码更改的日期并在自定义策略中进行此项检查?
【问题讨论】:
标签: azure-ad-b2c identity-experience-framework
我正在使用 B2C 自定义策略,我希望防止用户每天多次更改密码。是否可以获取最后一次密码更改的日期并在自定义策略中进行此项检查?
【问题讨论】:
标签: azure-ad-b2c identity-experience-framework
看看这个策略,它使用在用户对象上存储日期时间的概念来做一些条件控制:
https://github.com/azure-ad-b2c/samples/blob/master/policies/force-password-reset-after-90-days
您可以在成功更改密码后将日期存储在用户对象扩展属性中。然后,当用户尝试重置密码时,检查此时间戳并使用 claimTransform 与 24 小时进行比较。在声明中存储布尔结果。这可以使用claims transformation 类型的编排步骤来完成,该步骤调用dateComparison transform。
您可以在显示密码重置屏幕的自我断言技术配置文件之前进行此计算并设置声明值。然后在用户验证他们的电子邮件后,您可以使用输出声明转换来确保此boolean is false,否则使用您收集电子邮件的自断言技术配置文件中的元数据项引发错误:
<Metadata>
<Item Key="UserMessageIfClaimsTransformationBooleanValueIsNotEqual">Custom error message if account is disabled.</Item>
</Metadata>
【讨论】: