如何在Spring中重置LDAP密码(忘记密码

问题描述 投票:0回答:1

在Spring Boot中 1.5.9 应用程序,我有一个重置密码的功能。通过使用令牌,我能够识别正在重置密码的用户。

这就是我如何更新一个连接用户的密码。

public void updatePassword(User entity) {
  if (null != entity.getOldPassword() && null != entity.getPassword()) {
    userDetailsService.changePassword(entity.getOldPassword(), encrypt(entity.getPassword()));
  }
}

我使用 LdapUserDetailsManager userDetailsService从弹簧安全ldap 4.2.3.RELEASE,我没有看到任何方法来重置密码的用户,我有 username 从。

如何使用 username (或 uid ldap中的)?)

java spring ldap spring-ldap spring-security-ldap
1个回答
0
投票

解决方法在这个帖子里。https:/tech.wrighting.org20130606使用ldap密码-修改-扩展-操作-使用-spring-ldap

我是这样做的。

    DistinguishedName dn = new DistinguishedName(dn_string);
    Attribute passwordAttribute = new BasicAttribute(passwordAttr,
            newPassword);
    ModificationItem[] modificationItems = new ModificationItem[1];
    modificationItems[0] = new ModificationItem(
            DirContext.REPLACE_ATTRIBUTE, passwordAttribute);
/*
    Attribute userPasswordChangedAttribute = new BasicAttribute(
            LDAP_PASSWORD_CHANGE_DATE, format.format(convertToUtc(null)
                    .getTime()) + "Z");
    ModificationItem newPasswordChanged = new ModificationItem(
            DirContext.REPLACE_ATTRIBUTE, userPasswordChangedAttribute);
    modificationItems[1] = newPasswordChanged;
    */
    getLdapTemplate().modifyAttributes(dn, modificationItems);

我比较喜欢这种方法,因为我使用的spring security ldap的版本是不使用密码叠加来修改密码的,为了和它保持一致,否则,如果你使用的是spring security ldap的最新版本,比较喜欢第二种方法。

© www.soinside.com 2019 - 2024. All rights reserved.