Refactor LDAPClient (#1357)

This commit is contained in:
Grzegorz Piwowarek 2017-03-10 23:42:45 +01:00 committed by Zeger Hendrikse
parent ea26d4209e
commit 805868f75f
1 changed files with 25 additions and 22 deletions

View File

@ -1,23 +1,16 @@
package com.baeldung.ldap.client; package com.baeldung.ldap.client;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.ldap.core.*;
import org.springframework.ldap.support.LdapNameBuilder;
import javax.naming.Name;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Base64; import java.util.Base64;
import java.util.List; import java.util.List;
import javax.naming.Name;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.ldap.core.AttributesMapper;
import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.core.DirContextAdapter;
import org.springframework.ldap.core.DirContextOperations;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.support.LdapNameBuilder;
public class LdapClient { public class LdapClient {
@Autowired @Autowired
@ -34,16 +27,20 @@ public class LdapClient {
} }
public List<String> search(final String username) { public List<String> search(final String username) {
List<String> users = ldapTemplate.search("ou=users", "cn=" + username, new AttributesMapper<String>() { return ldapTemplate.search(
public String mapFromAttributes(Attributes attrs) throws NamingException { "ou=users",
return (String) attrs.get("cn").get(); "cn=" + username,
} (AttributesMapper<String>) attrs -> (String) attrs
}); .get("cn")
return users; .get());
} }
public void create(final String username, final String password) { public void create(final String username, final String password) {
Name dn = LdapNameBuilder.newInstance().add("ou", "users").add("cn", username).build(); Name dn = LdapNameBuilder
.newInstance()
.add("ou", "users")
.add("cn", username)
.build();
DirContextAdapter context = new DirContextAdapter(dn); DirContextAdapter context = new DirContextAdapter(dn);
context.setAttributeValues("objectclass", new String[] { "top", "person", "organizationalPerson", "inetOrgPerson" }); context.setAttributeValues("objectclass", new String[] { "top", "person", "organizationalPerson", "inetOrgPerson" });
@ -55,7 +52,11 @@ public class LdapClient {
} }
public void modify(final String username, final String password) { public void modify(final String username, final String password) {
Name dn = LdapNameBuilder.newInstance().add("ou", "users").add("cn", username).build(); Name dn = LdapNameBuilder
.newInstance()
.add("ou", "users")
.add("cn", username)
.build();
DirContextOperations context = ldapTemplate.lookupContext(dn); DirContextOperations context = ldapTemplate.lookupContext(dn);
context.setAttributeValues("objectclass", new String[] { "top", "person", "organizationalPerson", "inetOrgPerson" }); context.setAttributeValues("objectclass", new String[] { "top", "person", "organizationalPerson", "inetOrgPerson" });
@ -71,7 +72,9 @@ public class LdapClient {
try { try {
MessageDigest digest = MessageDigest.getInstance("SHA"); MessageDigest digest = MessageDigest.getInstance("SHA");
digest.update(password.getBytes()); digest.update(password.getBytes());
base64 = Base64.getEncoder().encodeToString(digest.digest()); base64 = Base64
.getEncoder()
.encodeToString(digest.digest());
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }