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

标签 java spring ldap spring-ldap spring-security-ldap

在 Spring Boot 1.5.9 应用程序中,我重置了密码。使用 token ,我能够识别正在重置密码的用户。

这是我更新已连接用户密码的方法:

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

我使用LdapUserDetailsManager userDetailsS​​ervice,来自spring security ldap 4.2.3.RELEASE,我没有看到任何方法来重置我拥有的用户的密码>用户名来自。

如何使用用户名(或 ldap 中的uid)重置密码?

最佳答案

解决方案在这篇文章中:https://tech.wrighting.org/2013/06/06/using-the-ldap-password-modify-extended-operation-with-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,更喜欢第二种方法。

关于java - 如何在 Spring 中重置 LDAP 密码(忘记密码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61722236/

相关文章:

java - Java 中的 Var-arg 语法

java - 是否可以在 Android 设备上使用 native 相机应用程序以编程方式拍照,而无需实际点击拍摄按钮?

java - 在 DispatcherServlet 中未找到名称为 '' 的 URI [/api/encodedurl] 的 HTTP 请求的映射

linux - 使用 LDAPSEARCH 返回 Active Directory 域中的所有组和 OU

java - Hibernate - 有没有办法将 2 列与 1 列连接起来?

java - java计算数组中的重复次数

java - 如何使用 Spring 4 配置 Hibernate 5

java - 自定义异常是否最好从 java 客户端抛出?

active-directory - ldapsearch整个事件目录,无refldap返回

windows - 从 DMZ 连接到 Active Directory 的最安全方法是什么?