概述
##java实现LDAP数据的增删改查
一、ldap在很多系统中被使用,再具体的业务中需要写代码来实现ldap的数据管理。首先需要加入ldap的依赖包:
<dependency>
<groupId>org.springframework.ldap</groupId>
<artifactId>spring-ldap-core</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
二、ldap的数据是层级的树状结构,底层的叶子结点创建需要建立在其父节点之前构造,例如下面的三层ldap entry
第一层:
dn: dc=honor,dc=zhe,dc=wang
objectClass: top
objectClass: domain
第二层:
dn: ou=daye,dc=honor,dc=zhe,dc=wang
objectClass: organizationalUnit
objectClass: top
ou: users
第三层:
dn: cn=houzi,ou=daye,dc=honor,dc=zhe,dc=wang
objectClass: person
objectClass: top
cn: houzi
sn: houzi
三、废话不多说,直接上代码
import org.apache.commons.lang.StringUtils;
import org.springframework.ldap.core.AuthenticationSource;
import org.springframework.ldap.core.DistinguishedName;
import org.springframework.ldap.core.LdapTemplate;
import org.springframework.ldap.core.support.LdapContextSource;
import javax.naming.Name;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import java.util.Random;
/**
* Created by xhh on 2018/4/1 14:47.
*/
public class LdapDemoTest {
public static void main(String[] args) {
LdapContextSource cs = new LdapContextSource();
cs.setCacheEnvironmentProperties(false);
cs.setUrl("ldap://192.168.10.26:389");
cs.setBase("dc=honor,dc=zhe,dc=wang");
// 用户名:cn=Manager,dc=honor,dc=zhe,dc=wang
// 密码:123456
cs.setAuthenticationSource(new AuthenticationSource() {
public String getCredentials() {
return "cn=Manager,dc=honor,dc=zhe,dc=wang";
}
public String getPrincipal() {
return "123456";
}
});
LdapTemplate template = new LdapTemplate(cs);
//创建第二层:(第一层数据一般是初始化的)
createSecondEntry(template,"daye");
//创建第三层:(第一层数据一般是初始化的,第二层需要创建好)
createThirdEntry(template,"daye","houzi");
}
/**
* 构造dn,Name
* @param type
* @param commonName
* @return
*/
public static DistinguishedName getDn(String type, String commonName) {
DistinguishedName dn = new DistinguishedName();
if (StringUtils.isNotBlank(type)) {
dn.add("ou", type);
}
if (StringUtils.isNotBlank(commonName)) {
dn.add("cn", commonName);
}
return dn;
}
/**
* bind方法即是创建;BasicAttribute 是基本属性,有了类属性之后,才能添加具体的属性
* @param template
* @param secondName
*/
public static void createSecondEntry(LdapTemplate template, String secondName){
Name dn = getDn(secondName,null);
BasicAttribute baAttr = new BasicAttribute("objectClass");
baAttr.add("top");
baAttr.add("organizationalUnit");
Attributes attrs = new BasicAttributes();
attrs.put(baAttr);
attrs.put("ou", secondName);
template.bind(dn, null, attrs);
}
/**
* 属性top,person,posixAccount决定了下面的属性:cn,sn,uid,gidNumber等
* @param template
* @param secondName
* @param thirdName
*/
public static void createThirdEntry(LdapTemplate template, String secondName, String thirdName){
Name dn = getDn(secondName,thirdName);
BasicAttribute baAttr = new BasicAttribute("objectClass");
baAttr.add("top");
baAttr.add("person");
baAttr.add("inetOrgPerson");
baAttr.add("posixAccount");
baAttr.add("shadowAccount");
Attributes attrs = new BasicAttributes();
attrs.put(baAttr);
attrs.put("cn", thirdName);
attrs.put("sn", thirdName);
Random random = new Random();
String uidNumber = random.nextInt(2000)+"";
attrs.put("uid", thirdName);
attrs.put("gidNumber", uidNumber);
attrs.put("uidNumber", uidNumber);
attrs.put("loginShell","/bin/bash");
template.bind(dn, null, attrs);
}
}
最后
以上就是风趣太阳为你收集整理的java实现LDAP数据的增删改查的全部内容,希望文章能够帮你解决java实现LDAP数据的增删改查所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复