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
// 输出查到的数据
while (e()) {
SearchResult result = ();
NamingEnumeration extends Attribute> 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
// 输出查到的数据
while (e()) {
SearchResult result = ();
NamingEnumeration extends Attribute> attrs =
ributes()。getAll();
while (e()) {
Attribute attr = ();
n(() + "=" + ());
}
n("============");
}
}
发布评论