package org.maziarz.ldap;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
import javax.naming.Context;
import javax.naming.Name;
import javax.naming.directory.Attributes;
import javax.naming.directory.InitialDirContext;
import javax.naming.spi.DirObjectFactory;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ldap.core.AttributesMapper;
import org.springframework.ldap.core.AuthenticationSource;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
public class LdapTemplateTest {
private static LdapProperties ldapProperties = new LdapProperties(
"ldap://:389"
,"LdapUser"
,"s3cr3t"
,"DC=mycompany,DC=local"
);
@Autowired
private LdapTemplate ldapTemplate;
public static class MyDirObjectFactory implements DirObjectFactory {
@Override
public Object getObjectInstance(Object o, Name name, Context context, Hashtable hashtable, Attributes attributes)
throws Exception {
return new InitialDirContext(ldapProperties.getContextProperties());
}
@Override
public Object getObjectInstance(Object o, Name name, Context context, Hashtable hashtable) throws Exception {
return new InitialDirContext(ldapProperties.getContextProperties());
}
}
@Before
public void before() {
LdapContextSource ldapContextSource = new LdapContextSource();
ldapContextSource.setUrl("ldap://"+ldapProperties.getHost()+":"+ldapProperties.getPort());
ldapContextSource.setBase(ldapProperties.getContext());
ldapContextSource.setUserDn(ldapProperties.getUsername());
ldapContextSource.setPassword(ldapProperties.getPassword());
ldapContextSource.setDirObjectFactory(MyDirObjectFactory.class);
ldapContextSource.setAuthenticationSource(new AuthenticationSource() {
@Override
public String getPrincipal() {
return ldapProperties.getUsername();
}
@Override
public String getCredentials() {
return ldapProperties.getPassword();
}
});
ldapContextSource.afterPropertiesSet();
ldapTemplate = new LdapTemplate(ldapContextSource);
ldapTemplate.setDefaultCountLimit(1000);
// ldapTemplate.setIgnorePartialResultException(true);
}
@Test
public void fetchAllAccounts() {
List search = ldapTemplate.search(
"OU=Users,OU=COMPANY", " (objectClass=person)",
(AttributesMapper) attrs -> {
if (attrs != null && attrs.get("sAMAccountName") != null) {
return Arrays.asList(
attrs.get("sAMAccountName").get()
,((attrs.get("sn") != null)? attrs.get("sn"):"none")
);
}
return "";
});
System.out.println(search);
}
}
niedziela, 12 listopada 2017
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz