1、搭建ldap服务,我用的系统是Ubuntu14.04,具体可以参考这篇文章:ubuntu14.04搭建ldap服务,按照步骤来没什么问题。
安装之后访问地址为:http://10.8.12.147/phpldapadmin/
name: cn=admin,dc=dianrong,dc=com
password: 123456
2、安装ldapsoft ldap admin tool,官网下载地址:http://www.ldapsoft.com/download.html
点击新建连接(New Connection),按照以下配置:
第一次进来,只会有下图的cn=admin
3、利用spring-ldap实现增删改查(没有使用注解)
model类:
/**
* Created by drjr on 5/17/17.
*/
public class User {
private String fullName;
private String lastName;
private String description;
private String country;
private String company;
private String phone;
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
定义操作ldap的接口类:
public interface UserDao {
void create(User user);
void update(User user);
void delete(String fullName);
List<String> getAllUserNames();
List<User> findAll();
User findByPrimaryKey(String fullname);
}
接口实现类:
public class UserDaoImpl implements UserDao {
private LdapTemplate ldapTemplate;
@Override
public void create(User user) {
Name dn = buildDn(user.getFullName()); // 生成条目唯一标识,有点类似mysql的主键ID
DirContextAdapter context = new DirContextAdapter(dn); // 根据体用提供的dn构建适配器对象
mapToContext(user, context); // 给适配器对象设置属性值
ldapTemplate.bind(dn, context, null); // 插入数据
}
@Override
public void update(User user) {
Name dn = buildDn(user.getFullName());
DirContextAdapter context = (DirContextAdapter) ldapTemplate.lookup(dn);
mapToContext(user, context);
ldapTemplate.modifyAttributes(dn, context.getModificationItems());
}
@Override
public void delete(String fullName) {
ldapTemplate.unbind(buildDn(fullName));
}
@Override
public List<String> getAllUserNames() {
return ldapTemplate.search(query()
.attributes("cn")
.where("objectclass").is("person"),
new AttributesMapper<String>() {
@Override
public String mapFromAttributes(Attributes attributes) throws NamingException {
return attributes.get("cn").get().toString();
}
});
}
@Override
public List<User> fi