Sun Directory ServerLDAP学习笔记二API说明及代码样例Word文件下载.docx
- 文档编号:20373020
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:24
- 大小:192.62KB
Sun Directory ServerLDAP学习笔记二API说明及代码样例Word文件下载.docx
《Sun Directory ServerLDAP学习笔记二API说明及代码样例Word文件下载.docx》由会员分享,可在线阅读,更多相关《Sun Directory ServerLDAP学习笔记二API说明及代码样例Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
∙search(Stringname,AttributesmatchingAttributes,String[]attributesToReturn)
根据过滤器搜索条目
∙search(Namename,StringfilterExpr,Object[]filterArgs,SearchControlscons)
∙search(Namename,Stringfilter,SearchControlscons)
∙search(Stringname,StringfilterExpr,Object[]filterArgs,SearchControlscons)
∙search(Stringname,Stringfilter,SearchControlscons)
javax.naming.directory.BasicAttribute,LDAP基本属性对象
该类用来表示LDAP条目中的单个属性对象。
在目录服务中,每个属性名称是可以对应多个的属性值的。
构建属性对象
∙BasicAttribute(Stringid)
∙BasicAttribute(Stringid,booleanordered)
∙BasicAttribute(Stringid,Objectvalue)
∙BasicAttribute(Stringid,Objectvalue,booleanordered)
添加属性值
∙add(intix,ObjectattrVal),添加属性值到多值属性的指定位置
∙add(ObjectattrVal),追加属性值到多值属性尾部
判断属性值是否包含
∙contains(ObjectattrVal),多值属性中有一个值是匹配的,返回true
获取属性值
∙get(),取得属性值中的一个
∙get(intix),从多值属性中的指定位置取值
获取属性ID
∙getID(),属性的ID就是属性名
删除属性值
∙remove(intix),删除指定位置的属性值
∙remove(Objectattrval),删除指定的属性值
javax.naming.directory.BasicAttributes,LDAP实体的属性集
该类表示一个LDAP条目绑定的属性集合,在绝大多数情况下,一个LDAP条目存在多个属性。
构造属性集
∙BasicAttributes()
∙BasicAttributes(booleanignoreCase),属性ID是否大小写敏感,建议不要使用敏感
∙BasicAttributes(StringattrID,Objectval)
∙BasicAttributes(StringattrID,Objectval,booleanignoreCase)
获取属性集中的单个属性对象
∙get(StringattrID)
获取全部属性的枚举
∙getAll()
获取全部属性的ID枚举
∙getIDs()
添加新属性
∙put(Attributeattr)
∙put(StringattrID,Objectval)
移除指定属性
∙remove(StringattrID)
javax.naming.directory.SearchControls,LDAP目录服务搜索控制对象
该类负责控制LDAP搜索行为的范围、设定返回结果数上限,搜索耗时上限,指定结果所包括的属性集等。
设定搜索行为的范围
∙setSearchScope(intscope)
设定返回结果数上限
∙setCountLimit(longlimit)
设定搜索耗时上限
∙setTimeLimit(intms),以毫秒为单位
指定结果所包括的属性集
∙setReturningAttributes(String[]attrs)
javax.naming.directory.SearchResult,表示.search()方法的返回结果集中的一项。
SearchResult类是对LDAP条目属性集的封装。
在search()操作中可能返回完整的条目属性,也可能是条目属性的一部分。
获取SearchResult封装的条目属性
∙getAttributes()
以上只列举了LDAP操作API的常用部分,更多更详细的描述,请参考SunJava6.0APIDOC。
LDAP操作代码样例
在这个章节中,我们将结合LDAP操作的代码实例了解API使用。
初始化LDAP目录服务上下文
该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ldap:
//localhost:
8389),认证方式采用simple类型,即用户名/密码方式。
Java代码
1.private
static
void
initialContext()
throws
NamingException{
2.
if(singleton
==
null){
3.
singleton
=
new
LDAPConnection();
4.
/*
5.
*
在实际编码中,这些环境变量应尽可能通过配置文件读取
6.
*/
7.
//LDAP服务地址
8.
singleton.sLDAP_URL
"
ldap:
8389"
;
9.
//管理员账号
10.
singleton.sMANAGER_DN
uid=linly,ou=People,dc=jsoso,dc=net"
11.
//管理员密码
12.
singleton.sMANAGER_PASSWORD
coffee"
13.
//认证类型
14.
singleton.sAUTH_TYPE
simple"
15.
//JNDI
Context工厂类
16.
singleton.sCONTEXT_FACTORY
com.sun.jndi.ldap.LdapCtxFactory"
17.
18.
singleton.envProps.setProperty(Context.INITIAL_CONTEXT_FACTORY,
singleton.sCONTEXT_FACTORY);
19.
singleton.envProps.setProperty(Context.PROVIDER_URL,
singleton.sLDAP_URL);
20.
singleton.envProps.setProperty(Context.SECURITY_AUTHENTICATION,
singleton.sAUTH_TYPE);
21.
singleton.envProps.setProperty(Context.SECURITY_PRINCIPAL,
singleton.sMANAGER_DN);
22.
singleton.envProps.setProperty(Context.SECURITY_CREDENTIALS,
singleton.sMANAGER_PASSWORD);
23.
24.
绑定ldap服务器
25.
26.
singleton.dirCtx
InitialDirContext(singleton.envProps);
27.
}
28.}
privatestaticvoidinitialContext()throwsNamingException{
if(singleton==null){
singleton=newLDAPConnection();
/*
*在实际编码中,这些环境变量应尽可能通过配置文件读取
*/
//LDAP服务地址
singleton.sLDAP_URL="
//管理员账号
singleton.sMANAGER_DN="
//管理员密码
singleton.sMANAGER_PASSWORD="
//认证类型
singleton.sAUTH_TYPE="
//JNDIContext工厂类
singleton.sCONTEXT_FACTORY="
singleton.envProps.setProperty(Context.INITIAL_CONTEXT_FACTORY,singleton.sCONTEXT_FACTORY);
singleton.envProps.setProperty(Context.PROVIDER_URL,singleton.sLDAP_URL);
singleton.envProps.setProperty(Context.SECURITY_AUTHENTICATION,singleton.sAUTH_TYPE);
singleton.envProps.setProperty(Context.SECURITY_PRINCIPAL,singleton.sMANAGER_DN);
singleton.envProps.setProperty(Context.SECURITY_CREDENTIALS,singleton.sMANAGER_PASSWORD);
*绑定ldap服务器
singleton.dirCtx=newInitialDirContext(singleton.envProps);
}
}
通过一个Hashtable或者Properties对象为LDAP的Context设置参数,而后初始化InitialDirContext,即可绑定LDAP服务。
这相当于JDBC中获取数据库的Connection对象。
绑定/创建LDAP条目对象
用户可以使用bind方法创建新的LDAP条目,下面的代码创建一个DN:
ou=Employee,dc=jsoso,dc=net"
的OrganizationUnit类LDAP条目如下:
1.public
boolean
createOrganizationUnit(){
String
ldapGroupDN
ou=Employee
dc=jsoso
dc=net"
try
{
查找是否已经存在指定的OU条目
如果存在,则打印OU条目的属性信息
如果不存在,则程序会抛出NamingException异常,进入异常处理
Attributes
attrs
dirContext.getAttributes(ldapGroupDN);
System.out.println("
Find
the
group
attributes
list
:
);
NamingEnumeration<
String>
nEnum
attrs.getIDs();
for(
nEnum.hasMore()
){
attrID
nEnum.next();
Attribute
attr
(Attribute)attrs.get(attrID);
System.out.println(attr.toString());
}
return
false;
catch
(NamingException
e)
没有找到对应的Group条目,新增Group条目
//创建objectclass属性
objclass
BasicAttribute("
objectclass"
objclass.add("
top"
organizationalunit"
//创建cn属性
cn
ou"
Employee"
28.
//创建Attributes,并添加objectclass和cn属性
29.
BasicAttributes();
30.
attrs.put(objclass);
31.
attrs.put(cn);
32.
//将属性绑定到新的条目上,创建该条目
33.
34.
dirContext.bind(ldapGroupDN,
null,
attrs);
35.
Group
created
successful"
36.
true;
37.
e1)
38.
e1.printStackTrace();
39.
40.
41.
42.}
publicbooleancreateOrganizationUnit(){
StringldapGroupDN="
try{
*查找是否已经存在指定的OU条目
*如果存在,则打印OU条目的属性信息
*如果不存在,则程序会抛出NamingException异常,进入异常处理
Attributesattrs=dirContext.getAttributes(ldapGroupDN);
System.out.println("
Findthegroup,attributeslist:
NamingEnumeration<
nEnum=attrs.getIDs();
for(;
nEnum.hasMore();
){
StringattrID=nEnum.next();
Attributeattr=(Attribute)attrs.get(attrID);
System.out.println(attr.toString());
}
returnfalse;
}catch(NamingExceptione){
*没有找到对应的Group条目,新增Group条目
//创建objectclass属性
Attributeobjclass=newBasicAttribute("
objclass.add("
//创建cn属性
Attributecn=newBasicAttribute("
"
//创建Attributes,并添加objectclass和cn属性
Attributesattrs=newBasicAttributes();
attrs.put(objclass);
attrs.put(cn);
//将属性绑定到新的条目上,创建该条目
try{
dirContext.bind(ldapGroupDN,null,attrs);
System.out.println("
Groupcreatedsuccessful"
returntrue;
}catch(NamingExceptione1){
e1.printStackTrace();
}
returnfalse;
或者使用createSubcontext方法创建亦可,以下例子我们新增一个inetorgperson类的LDAP条目:
1./**
创建LDAP用户条目
@param
user
@return
6.public
createUser(LDAPUser
user){
if(user
if(user.getUserID()
null
||
user.getUserID().length()
0
user.getFirstName()
user.getFirstName().length()
user.getLastName()
user.getLastName().length()
user.getCommomName()
user.getCommomName().length()
0){
fals
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Sun Directory ServerLDAP学习笔记二API说明及代码样例 ServerLDAP 学习 笔记 API 说明 代码
链接地址:https://www.bdocx.com/doc/20373020.html