将当前密码字段添加到 CAS 密码更改请求

Adding a current password field to CAS password change request

我正在尝试使用 CAS 6.2.7 和 Thymeleaf 实施最少字符轮换密码重置策略。由于密码散列是一回事,因此必须在将密码请求发送到服务器之前进行此检查。因此,我需要一个当前密码字段作为密码重置视图的一部分。

使用的模型是CAS的cas-server-support-pm-core模块中的PasswordChangeRequest。这个模型有一个 password 字段和一个 confirmedPassword 字段。我需要修改此模型以包含 currentPassword 字段,或者以某种方式 link 我自己的模型到表单并将它们一起发送。

我已经在 https://github.com/apereo/cas/blob/master/docs/cas-server-documentation/webflow/Webflow-Customization-Extensions.md 中找到的指导的帮助下尝试了这两个选项。我不是很精通 Spring WebFlow 并且怀疑我什至不熟悉。

有什么办法可以实现吗?如果可以,怎么做?

最终尝试更改密码的组件是执行此操作的 PasswordManagementService 的实现:

   boolean change(Credential credential, PasswordChangeRequest pcr) 
              throws InvalidPasswordException {
        ...
    }

如果您设计自己的自定义服务,您可以实施 change() 方法,在那里,您可以使用 credential 访问原始密码,然后将其转换为 UsernamePasswordCredential.

自定义实现通常具有以下大纲:

@Configuration("MyPasswordConfiguration")
@EnableConfigurationProperties(CasConfigurationProperties.class)
public class MyPasswordConfiguration {

    @Bean
    public PasswordManagementService passwordChangeService() {
        ...
    }
}