2023年6月21日发(作者:)

冠:

dn:cn=zhujian_jiluming,ou=biao_ming,dc=shujuku_ming

sn 真实名称

cn 常用名称 也可是具体哪个管理员或用户

ou 部门 也可是管理员或用户

o 公司

c 国家

dc 域名

数据类型主要是字符型,为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等

1、完整DN包括:

基准DN:dc=..,dc=..,dc=..,等等

相对路径(ou):可以是多层文件夹,例如ou=..,ou=..,ou=..,等等

区别名(cn或uid):相当于记录的名字

2、条目:相当于记录,而且每个条目必须属于某个或多个对象类

OpenDS中左侧的属性大部分都是来自于左侧的所属的对象类

3、如下是LDAP记录的详细信息

dn:cn=stan,ou=linux,ou=computer,dc=school,dc=org 此处cn是记录的名字,与下面的cn不同

objectClass:organizationalPerson 这个就是所属的对象类

cn:stan cn是属性,此cn与下面的cn是同一个属性,只不过包含多个值吧了,方便查找

cn:小刀 cn是属性,这些属性大部分来自于所属的对象类

sn:小刀 sn是属性

description:agoodboy

(以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中)

4、若使用系统提供的对象类,则必须遵守该对象类对包含的属性所做的限制,例如,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值等,例如,你选择了“objectClass:organizationalPerson”,虽然这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶替。

若使用自己定义的对象类,则没有上面的限制。

LDAP 连接池的最小尺寸:缺省值为 1。

OpenDS在刚开机时显示LDAP 连接池的最大尺寸:缺省值为 10。

JAVA_基本LDAP操作

发布者:a1b2c3li 来源:网络转载 发布日期:2013年11月01日 文章评论 发表文章 一、简介

Lightweight Directory Access Protocol (LDAP),轻型目录访问协议是一个访问在线目录服务的协议。下面的例子中简单介绍在java中队ldap的增删该查功能。目录结构为:

CD=CAS,DC=MYDC

--cn=users

----uid=zhangsan

二、示例

1、通过LdapContext连接ldap

[java]

/**

* 连接LDAP

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public LdapContext connetLDAP() throws NamingException {

// 连接Ldap需要的信息

String ldapFactory = "xFactory";

String ldapUrl = "ldap:/IP:port";// url

String ldapAccount = "cn=root"; // 用户名

String ldapPwd = "password";//密码

Hashtable env = new Hashtable(); (L_CONTEXT_FACTORY, ldapFactory);

// LDAP server

(ER_URL, ldapUrl);

(TY_AUTHENTICATION, "simple");

(TY_PRINCIPAL, ldapAccount);

(TY_CREDENTIALS, ldapPwd);

("al", "follow");

LdapContext ctxTDS = new InitialLdapContext(env, null);

return ctxTDS;

}

2、增加用户zhangsan

[java]

// 添加

public void testAdd() throws Exception {

LdapContext ctx = connetLDAP();

Attributes attrs = new BasicAttributes(true);

Attribute objclass = new BasicAttribute("objectclass");

// 添加ObjectClass

String[] attrObjectClassPerson = { "inetOrgPerson",

"organizationalPerson", "person", "top" }; (attrObjectClassPerson);

for (String ocp : attrObjectClassPerson) {

(ocp);

}

(objclass);

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

// 密码处理

// ("uid", uid);

("cn", uid);

("sn", uid);

("displayName", "张三");

("mail", "");

("description", "");

("userPassword", "Passw0rd".getBytes("UTF-8"));

Subcontext(userDN, attrs);

}

3、删除用户zhangsan

[java]

//删除 public void testRemove() throws Exception {

LdapContext ctx = connetLDAP();

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

ySubcontext(userDN);

}

4、修改zhangsan的邮件地址

[java]

//修改

public boolean testModify() throws Exception {

boolean result = true;

LdapContext ctx = connetLDAP();

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

Attributes attrs = new BasicAttributes(true);

("mail", "");

Attributes(userDN, E_ATTRIBUTE,

attrs);

return result;

} 5、查找用户

[java]

//查询

public void testSearch() throws Exception {

LdapContext ctx = connetLDAP();

// 设置过滤条件

String uid = "zhangsan";

String filter = "(&(objectClass=top)(objectClass=organizationalPerson)(uid=" + uid + "))";

// 限制要查询的字段内容

String[] attrPersonArray = { "uid", "userPassword", "displayName",

"cn", "sn", "mail", "description" };

SearchControls searchControls = new SearchControls();

rchScope(E_SCOPE);

// 设置将被返回的Attribute

urningAttributes(attrPersonArray);

// 三个参数分别为:

// 上下文;

// 要搜索的属性,如果为空或 null,则返回目标上下文中的所有对象;

// 控制搜索的搜索控件,如果为 null,则使用默认的搜索控件 NamingEnumeration answer = ("cn=users,dc=cas,dc=mydc", ng(), searchControls);

// 输出查到的数据

while (e()) {

SearchResult result = ();

NamingEnumeration attrs =

ributes()。getAll();

while (e()) {

Attribute attr = ();

n(() + "=" + ());

}

n("============");

}

}

2023年6月21日发(作者:)

冠:

dn:cn=zhujian_jiluming,ou=biao_ming,dc=shujuku_ming

sn 真实名称

cn 常用名称 也可是具体哪个管理员或用户

ou 部门 也可是管理员或用户

o 公司

c 国家

dc 域名

数据类型主要是字符型,为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等

1、完整DN包括:

基准DN:dc=..,dc=..,dc=..,等等

相对路径(ou):可以是多层文件夹,例如ou=..,ou=..,ou=..,等等

区别名(cn或uid):相当于记录的名字

2、条目:相当于记录,而且每个条目必须属于某个或多个对象类

OpenDS中左侧的属性大部分都是来自于左侧的所属的对象类

3、如下是LDAP记录的详细信息

dn:cn=stan,ou=linux,ou=computer,dc=school,dc=org 此处cn是记录的名字,与下面的cn不同

objectClass:organizationalPerson 这个就是所属的对象类

cn:stan cn是属性,此cn与下面的cn是同一个属性,只不过包含多个值吧了,方便查找

cn:小刀 cn是属性,这些属性大部分来自于所属的对象类

sn:小刀 sn是属性

description:agoodboy

(以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数据库中)

4、若使用系统提供的对象类,则必须遵守该对象类对包含的属性所做的限制,例如,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值等,例如,你选择了“objectClass:organizationalPerson”,虽然这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶替。

若使用自己定义的对象类,则没有上面的限制。

LDAP 连接池的最小尺寸:缺省值为 1。

OpenDS在刚开机时显示LDAP 连接池的最大尺寸:缺省值为 10。

JAVA_基本LDAP操作

发布者:a1b2c3li 来源:网络转载 发布日期:2013年11月01日 文章评论 发表文章 一、简介

Lightweight Directory Access Protocol (LDAP),轻型目录访问协议是一个访问在线目录服务的协议。下面的例子中简单介绍在java中队ldap的增删该查功能。目录结构为:

CD=CAS,DC=MYDC

--cn=users

----uid=zhangsan

二、示例

1、通过LdapContext连接ldap

[java]

/**

* 连接LDAP

*/

@SuppressWarnings({ "rawtypes", "unchecked" })

public LdapContext connetLDAP() throws NamingException {

// 连接Ldap需要的信息

String ldapFactory = "xFactory";

String ldapUrl = "ldap:/IP:port";// url

String ldapAccount = "cn=root"; // 用户名

String ldapPwd = "password";//密码

Hashtable env = new Hashtable(); (L_CONTEXT_FACTORY, ldapFactory);

// LDAP server

(ER_URL, ldapUrl);

(TY_AUTHENTICATION, "simple");

(TY_PRINCIPAL, ldapAccount);

(TY_CREDENTIALS, ldapPwd);

("al", "follow");

LdapContext ctxTDS = new InitialLdapContext(env, null);

return ctxTDS;

}

2、增加用户zhangsan

[java]

// 添加

public void testAdd() throws Exception {

LdapContext ctx = connetLDAP();

Attributes attrs = new BasicAttributes(true);

Attribute objclass = new BasicAttribute("objectclass");

// 添加ObjectClass

String[] attrObjectClassPerson = { "inetOrgPerson",

"organizationalPerson", "person", "top" }; (attrObjectClassPerson);

for (String ocp : attrObjectClassPerson) {

(ocp);

}

(objclass);

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

// 密码处理

// ("uid", uid);

("cn", uid);

("sn", uid);

("displayName", "张三");

("mail", "");

("description", "");

("userPassword", "Passw0rd".getBytes("UTF-8"));

Subcontext(userDN, attrs);

}

3、删除用户zhangsan

[java]

//删除 public void testRemove() throws Exception {

LdapContext ctx = connetLDAP();

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

ySubcontext(userDN);

}

4、修改zhangsan的邮件地址

[java]

//修改

public boolean testModify() throws Exception {

boolean result = true;

LdapContext ctx = connetLDAP();

String uid = "zhangsan";

String userDN = "uid=" + uid + "," + "cn=users,dc=cas,dc=mydc";

Attributes attrs = new BasicAttributes(true);

("mail", "");

Attributes(userDN, E_ATTRIBUTE,

attrs);

return result;

} 5、查找用户

[java]

//查询

public void testSearch() throws Exception {

LdapContext ctx = connetLDAP();

// 设置过滤条件

String uid = "zhangsan";

String filter = "(&(objectClass=top)(objectClass=organizationalPerson)(uid=" + uid + "))";

// 限制要查询的字段内容

String[] attrPersonArray = { "uid", "userPassword", "displayName",

"cn", "sn", "mail", "description" };

SearchControls searchControls = new SearchControls();

rchScope(E_SCOPE);

// 设置将被返回的Attribute

urningAttributes(attrPersonArray);

// 三个参数分别为:

// 上下文;

// 要搜索的属性,如果为空或 null,则返回目标上下文中的所有对象;

// 控制搜索的搜索控件,如果为 null,则使用默认的搜索控件 NamingEnumeration answer = ("cn=users,dc=cas,dc=mydc", ng(), searchControls);

// 输出查到的数据

while (e()) {

SearchResult result = ();

NamingEnumeration attrs =

ributes()。getAll();

while (e()) {

Attribute attr = ();

n(() + "=" + ());

}

n("============");

}

}