tag: spring ldap demo
最近在弄AD 活动目录的登录功能,用到了spring-ldap1.3,留个脚印!
package sample;
import java.util.List;
import javax.naming.NamingException;
import javax.naming.directory.Attributes;
import org.springframework.ldap.core.AttributesMapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.generic.GenericBeanFactoryAccessor;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.filter.AndFilter;
import org.springframework.ldap.filter.EqualsFilter;
import org.springframework.ldap.filter.WhitespaceWildcardsFilter;
import sample.bean.Person;
public class SpringLdapDemo {
protected static final Log log = LogFactory.getLog(SpringLdapDemo.class);
public static void main(String[] args) {
SpringLdapDemo sld=new SpringLdapDemo();
AbstractApplicationContext lbf =
new ClassPathXmlApplicationContext("/applicationContext-ldap.xml");
lbf.registerShutdownHook();
GenericBeanFactoryAccessor gbfa = new GenericBeanFactoryAccessor(lbf);
LdapTemplate lt = gbfa.getBean("ldapTemplate");
List<?> usersList =sld.getAllPersonNames(lt);
//打印出用户集合
log.info("打印出用户集合");
log.info(usersList);
log.info(usersList.size());
log.info("用户查询");
List findlist=sld.getPersonNamesByLastName("jgec", lt);
log.info(findlist);
}
//获取用户名
public List<?> getAllPersonNames(LdapTemplate lt) {
return lt.search(
"", "(objectclass=person)",
new AttributesMapper() {
public Object mapFromAttributes(Attributes attrs)
throws NamingException {
return attrs.get("cn").get();
}
});
}
//获取用户dn
public List getPersonNamesByLastName(String lastName,LdapTemplate lt) {
AndFilter filter = new AndFilter();
filter.and(new EqualsFilter("objectclass", "person"));
filter.and(new WhitespaceWildcardsFilter("cn", lastName));
return lt.search(
"", filter.encode(),
new AttributesMapper() {
public Object mapFromAttributes(Attributes attrs)
throws NamingException {
return attrs.get("distinguishedName").get();
}
});
}
public List getAllPersons(LdapTemplate lt) {
return lt.search(
"", "(objectclass=person)", new PersonAttributesMapper());
}
public sample.bean.Person getPersonByDn(String dn,LdapTemplate lt) {
return (Person)lt.lookup(dn, new PersonAttributesMapper());
}
private class PersonAttributesMapper implements AttributesMapper {
public Object mapFromAttributes(Attributes attrs) throws NamingException {
Person person = new Person();
person.setCn((String) attrs.get("cn").get());
person.setSn((String) attrs.get("sn").get());
return person;
}
}
}
applicationContext-ldap.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<bean id="ldapContextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="referral" value="follow"></property>
<property name="url" value="ldap://172.16.23.216:389" />
<property name="base" value="DC=chy,DC=com,DC=cn" />
<property name="userDn"
value="CN=Administrator,CN=Users,DC=chy,DC=com,DC=cn" />
<property name="password" value="1234" />
<property name="baseEnvironmentProperties">
<map>
<entry key="java.naming.security.authentication" value="simple" />
</map>
</property>
</bean>
<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
<property name="contextSource" ref="ldapContextSource" />
</bean>
</beans>
public class Person {
String cn;
String sn;
public String getCn() {
return cn;
}
public void setCn(String cn) {
this.cn = cn;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public Person(String cn, String sn) {
super();
this.cn = cn;
this.sn = sn;
}
public Person() {
}
}