- 浏览: 2261726 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
1. LDAP简介
LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。
LDAP目录中的信息是是按照树型结构组织,具体信息存储在条目(entry)的数据结构中。条目相当于关系数据库中表的记录;条目是具有区别名DN (Distinguished Name)的属性(Attribute),DN是用来引用条目的,DN相当于关系数据库表中的关键字(Primary Key)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。类型的一个例子就是mail,其值将是一个电子邮件地址。
LDAP的信息是以树型结构存储的,在树根一般定义国家(c=CN)或域名(dc=com),在其下则往往定义一个或多个组织 (organization)(o=Acme)或组织单元(organizational units) (ou=People)。一个组织单元可能包含诸如所有雇员、大楼内的所有打印机等信息。此外,LDAP支持对条目能够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别(objectClass)的属性来实现的。该属性的值决定了该条目必须遵循的一些规则,其规定了该条目能够及至少应该包含哪些属性。例如:inetorgPerson对象类需要支持sn(surname)和cn(common name)属性,但也可以包含可选的如邮件,电话号码等属性。
2. LDAP简称对应
o– organization(组织-公司)
ou – organization unit(组织单元-部门)
c - countryName(国家)
dc - domainComponent(域名)
sn – suer name(真实名称)
cn - common name(常用名称)
3. 目录设计
设计目录结构是LDAP最重要的方面之一。下面我们将通过一个简单的例子来说明如何设计合理的目录结构。该例子将通过Netscape地址薄来访文。假设有一个位于美国US(c=US)而且跨越多个州的名为Acme(o=Acme)的公司。Acme希望为所有的雇员实现一个小型的地址薄服务器。
我们从一个简单的组织DN开始:
dn: o=Acme, c=US
Acme所有的组织分类和属性将存储在该DN之下,这个DN在该存储在该服务器的目录是唯一的。Acme希望将其雇员的信息分为两类:管理者(ou= Managers)和普通雇员(ou=Employees),这种分类产生的相对区别名(RDN,relative distinguished names。表示相对于顶点DN)就shi :
dn: ou=Managers, o=Acme, c=US
dn: ou=Employees, o=Acme, c=US
在下面我们将会看到分层结构的组成:顶点是US的Acme,下面是管理者组织单元和雇员组织单元。因此包括Managers和Employees的DN组成为:
dn: cn=Jason H. Smith, ou=Managers, o=Acme, c=US
dn: cn=Ray D. Jones, ou=Employees, o=Acme, c=US
dn: cn=Eric S. Woods, ou=Employees, o=Acme, c=US
为了引用Jason H. Smith的通用名(common name )条目,LDAP将采用cn=Jason H. Smith的RDN。然后将前面的父条目结合在一起就形成如下的树型结构:
cn=Jason H. Smith
+ ou=Managers
+ o=Acme
+ c=US
-> dn: cn=Jason H. Smith,ou=Managers,o=Acme,c=US
现在已经定义好了目录结构,下一步就需要导入目录信息数据。目录信息数据将被存放在LDIF文件中,其是导入目录信息数据的默认存放文件。用户可以方便的编写Perl脚本来从例如/etc/passwd、NIS等系统文件中自动创建LDIF文件。
下面的实例保存目录信息数据为testdate.ldif文件,该文件的格式说明将可以在man ldif中得到。
在添加任何组织单元以前,必须首先定义Acme DN:
dn: o=Acme, c=US
objectClass: organization
这里o属性是必须的
o: Acme
下面是管理组单元的DN,在添加任何管理者信息以前,必须先定义该条目。
dn: ou=Managers, o=Acme, c=US
objectClass: organizationalUnit
这里ou属性是必须的。
ou: Managers
第一个管理者DN:
dn: cn=Jason H. Smith, ou=Managers, o=Acme, c=US
objectClass: inetOrgPerson
cn和sn都是必须的属性:
cn: Jason H. Smith
sn: Smith
但是还可以定义一些可选的属性:
telephoneNumber: 111-222-9999
mail: headhauncho@acme.com
localityName: Houston
可以定义另外一个组织单元:
dn: ou=Employees, o=Acme, c=US
objectClass: organizationalUnit
ou: Employees
并添加雇员信息如下:
dn: cn=Ray D. Jones, ou=Employees, o=Acme, c=US
objectClass: inetOrgPerson
cn: Ray D. Jones
sn: Jones
telephoneNumber: 444-555-6767
mail: jonesrd@acme.com
localityName: Houston
dn: cn=Eric S. Woods, ou=Employees, o=Acme, c=US
objectClass: inetOrgPerson
cn: Eric S. Woods
sn: Woods
telephoneNumber: 444-555-6768
mail: woodses@acme.com
localityName: Houston
4. 配置OpenLDAP
本文实践了在 Windows 下安装配 openldap,并添加一个条目,LdapBrowser 浏览,及 Java 程序连接 openldap 的全过程。
1. 下载安装 openldap for windows,当前版本2.2.29下载地址:http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe
相关链接:http://lucas.bergmans.us/hacks/openldap/
安装很简单,一路 next 即可,假设我们安装在 c:\openldap
2. 配置 openldap,编辑 sldap.conf 文件
1) 打开 c:\openldap\sldap.conf,找到
include C:/openldap/etc/schema/core.schema,在它后面添加
include C:/openldap/etc/schema/cosine.schema
include C:/openldap/etc/schema/inetorgperson.schema
接下来的例子只需要用到以上三个 schema,当然,如果你觉得需要的话,你可以把其他的 schema 全部添加进来
include C:/openldap/etc/schema/corba.schema
include C:/openldap/etc/schema/dyngroup.schema
include C:/openldap/etc/schema/java.schema
include C:/openldap/etc/schema/misc.schema
include C:/openldap/etc/schema/nis.schema
include C:/openldap/etc/schema/openldap.schema
2) 还是在 sldap.conf 文件中,找到
suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
把这两行改为
suffix "o=teemlink,c=cn"
rootdn "cn=Manager,o=teemlink,dc=cn"
suffix 就是看自己如何定义了,后面步骤的 ldif 文件就必须与它定义了。还要注意到这个配置文件中有一个 rootpw secret,这个 secret 是 cn=Manager 的密码,以后会用到,不过这里是明文密码,你可以用命令: slappasswd -h {MD5} -s secret 算出加密的密码 {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== 取代配置中的 secret。
3. 启动 openldap
CMD 进入到 c:\openldap 下,运行命令 sldapd -d 1
用可以看到控制台下打印一片信息,openldap 默认是用的 Berkeley DB 数据库存储目录数据的。
4. 建立条目,编辑导入 ldif 文件
1) 新建一个 ldif(LDAP Data Interchanged Format) 文件(纯文本格式),例如 test.ldif,文件内容如下:
dn: o=teemlink
objectclass: top
objectclass: organization
o: develop
2) 执行命令:ldapadd -l test.ldif
5. 使用LDAP Browser进行访问
5.1安装LDAP Browser2.6软件,进行如下操作:
5.2显示效果
5. Java操作LDAP
5.1 用JNDI进访问
package cn.myapps.test;import java.util.Hashtable;import javax.naming.Context;import javax.naming.NamingException;import javax.naming.directory.Attributes;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;public class LdapTest { public void JNDILookup() { String root = "o=teemlink,c=cn"; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://192.168.0.30/" + root); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=Nicholas,ou=产品,o=teemlink,c=cn"); env.put(Context.SECURITY_CREDENTIALS, "123456"); DirContext ctx = null; try { ctx = new InitialDirContext(env); Attributes attrs = ctx.getAttributes("cn=Nicholas,ou=产品"); System.out.println("Last Name: " + attrs.get("sn").get()); System.out.println("认证成功"); } catch (javax.naming.AuthenticationException e) { e.printStackTrace(); System.out.println("认证失败"); } catch (Exception e) { System.out.println("认证出错:"); e.printStackTrace(); } if (ctx != null) { try { ctx.close(); } catch (NamingException e) { // ignore } } } public static void main(String[] args) { LdapTest LDAPTest = new LdapTest(); LDAPTest.JNDILookup(); }}
5.2 用JLDAP进访问
访问地址:http://www.openldap.org/jldap/ 并下载相关lib
import com.novell.ldap.*;import java.io.UnsupportedEncodingException;public class List{ public static void main(String[] args) { int ldapPort = LDAPConnection.DEFAULT_PORT; int searchScope = LDAPConnection.SCOPE_ONE; int ldapVersion = LDAPConnection.LDAP_V3; boolean attributeOnly = false; String attrs[] = null; String ldapHost = "192.168.0.30"; String loginDN = "cn=Manager,o=teemlink,c=cn"; String password = "secret"; String searchBase = "ou=develop,o=teemlink,c=cn"; String searchFilter = "objectClass=*"; LDAPConnection lc = new LDAPConnection(); try { // connect to the server lc.connect(ldapHost, ldapPort); // bind to the server lc.bind(ldapVersion, loginDN, password.getBytes("UTF8")); LDAPSearchResults searchResults = lc.search(searchBase, // container to search searchScope, // search scope searchFilter, // search filter attrs, // "1.1" returns entry name only attributeOnly); // no attributes are returned // print out all the objects while (searchResults.hasMore()) { LDAPEntry nextEntry = null; try { nextEntry = searchResults.next(); System.out.println("\n" + nextEntry.getDN()); System.out.println(nextEntry.getAttributeSet()); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); // Exception is thrown, go for next entry continue; } } // disconnect with the server lc.disconnect(); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); } catch (UnsupportedEncodingException e) { System.out.println("Error: " + e.toString()); } System.exit(0); }}
5.3 用JDBC-LDAP进访问
访问地址:http://www.openldap.org/jdbcldap/ 并下载相关lib
package jdbcldap;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class JdbcLdap { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Class.forName("com.octetstring.jdbcLdap.sql.JdbcLdapDriver"); String ldapConnectString = "jdbc:ldap://192.168.0.30/o=teemlink,c=cn?SEARCH_SCOPE:=subTreeScope"; Connection con = DriverManager.getConnection(ldapConnectString, "cn=Manager,o=teemlink,c=cn", "secret"); String sql = "SELECT * FROM ou=develop,o=teemlink,c=cn"; Statement sat = con.createStatement(); ResultSet rs = sta.executeQuery(sql); while (rs.next()) { System.out.println(rs.getString(1)); } if (con != null) con.close(); }}
LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。
LDAP目录中的信息是是按照树型结构组织,具体信息存储在条目(entry)的数据结构中。条目相当于关系数据库中表的记录;条目是具有区别名DN (Distinguished Name)的属性(Attribute),DN是用来引用条目的,DN相当于关系数据库表中的关键字(Primary Key)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据库。类型的一个例子就是mail,其值将是一个电子邮件地址。
LDAP的信息是以树型结构存储的,在树根一般定义国家(c=CN)或域名(dc=com),在其下则往往定义一个或多个组织 (organization)(o=Acme)或组织单元(organizational units) (ou=People)。一个组织单元可能包含诸如所有雇员、大楼内的所有打印机等信息。此外,LDAP支持对条目能够和必须支持哪些属性进行控制,这是有一个特殊的称为对象类别(objectClass)的属性来实现的。该属性的值决定了该条目必须遵循的一些规则,其规定了该条目能够及至少应该包含哪些属性。例如:inetorgPerson对象类需要支持sn(surname)和cn(common name)属性,但也可以包含可选的如邮件,电话号码等属性。
2. LDAP简称对应
o– organization(组织-公司)
ou – organization unit(组织单元-部门)
c - countryName(国家)
dc - domainComponent(域名)
sn – suer name(真实名称)
cn - common name(常用名称)
3. 目录设计
设计目录结构是LDAP最重要的方面之一。下面我们将通过一个简单的例子来说明如何设计合理的目录结构。该例子将通过Netscape地址薄来访文。假设有一个位于美国US(c=US)而且跨越多个州的名为Acme(o=Acme)的公司。Acme希望为所有的雇员实现一个小型的地址薄服务器。
我们从一个简单的组织DN开始:
dn: o=Acme, c=US
Acme所有的组织分类和属性将存储在该DN之下,这个DN在该存储在该服务器的目录是唯一的。Acme希望将其雇员的信息分为两类:管理者(ou= Managers)和普通雇员(ou=Employees),这种分类产生的相对区别名(RDN,relative distinguished names。表示相对于顶点DN)就shi :
dn: ou=Managers, o=Acme, c=US
dn: ou=Employees, o=Acme, c=US
在下面我们将会看到分层结构的组成:顶点是US的Acme,下面是管理者组织单元和雇员组织单元。因此包括Managers和Employees的DN组成为:
dn: cn=Jason H. Smith, ou=Managers, o=Acme, c=US
dn: cn=Ray D. Jones, ou=Employees, o=Acme, c=US
dn: cn=Eric S. Woods, ou=Employees, o=Acme, c=US
为了引用Jason H. Smith的通用名(common name )条目,LDAP将采用cn=Jason H. Smith的RDN。然后将前面的父条目结合在一起就形成如下的树型结构:
cn=Jason H. Smith
+ ou=Managers
+ o=Acme
+ c=US
-> dn: cn=Jason H. Smith,ou=Managers,o=Acme,c=US
现在已经定义好了目录结构,下一步就需要导入目录信息数据。目录信息数据将被存放在LDIF文件中,其是导入目录信息数据的默认存放文件。用户可以方便的编写Perl脚本来从例如/etc/passwd、NIS等系统文件中自动创建LDIF文件。
下面的实例保存目录信息数据为testdate.ldif文件,该文件的格式说明将可以在man ldif中得到。
在添加任何组织单元以前,必须首先定义Acme DN:
dn: o=Acme, c=US
objectClass: organization
这里o属性是必须的
o: Acme
下面是管理组单元的DN,在添加任何管理者信息以前,必须先定义该条目。
dn: ou=Managers, o=Acme, c=US
objectClass: organizationalUnit
这里ou属性是必须的。
ou: Managers
第一个管理者DN:
dn: cn=Jason H. Smith, ou=Managers, o=Acme, c=US
objectClass: inetOrgPerson
cn和sn都是必须的属性:
cn: Jason H. Smith
sn: Smith
但是还可以定义一些可选的属性:
telephoneNumber: 111-222-9999
mail: headhauncho@acme.com
localityName: Houston
可以定义另外一个组织单元:
dn: ou=Employees, o=Acme, c=US
objectClass: organizationalUnit
ou: Employees
并添加雇员信息如下:
dn: cn=Ray D. Jones, ou=Employees, o=Acme, c=US
objectClass: inetOrgPerson
cn: Ray D. Jones
sn: Jones
telephoneNumber: 444-555-6767
mail: jonesrd@acme.com
localityName: Houston
dn: cn=Eric S. Woods, ou=Employees, o=Acme, c=US
objectClass: inetOrgPerson
cn: Eric S. Woods
sn: Woods
telephoneNumber: 444-555-6768
mail: woodses@acme.com
localityName: Houston
4. 配置OpenLDAP
本文实践了在 Windows 下安装配 openldap,并添加一个条目,LdapBrowser 浏览,及 Java 程序连接 openldap 的全过程。
1. 下载安装 openldap for windows,当前版本2.2.29下载地址:http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe
相关链接:http://lucas.bergmans.us/hacks/openldap/
安装很简单,一路 next 即可,假设我们安装在 c:\openldap
2. 配置 openldap,编辑 sldap.conf 文件
1) 打开 c:\openldap\sldap.conf,找到
include C:/openldap/etc/schema/core.schema,在它后面添加
include C:/openldap/etc/schema/cosine.schema
include C:/openldap/etc/schema/inetorgperson.schema
接下来的例子只需要用到以上三个 schema,当然,如果你觉得需要的话,你可以把其他的 schema 全部添加进来
include C:/openldap/etc/schema/corba.schema
include C:/openldap/etc/schema/dyngroup.schema
include C:/openldap/etc/schema/java.schema
include C:/openldap/etc/schema/misc.schema
include C:/openldap/etc/schema/nis.schema
include C:/openldap/etc/schema/openldap.schema
2) 还是在 sldap.conf 文件中,找到
suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
把这两行改为
suffix "o=teemlink,c=cn"
rootdn "cn=Manager,o=teemlink,dc=cn"
suffix 就是看自己如何定义了,后面步骤的 ldif 文件就必须与它定义了。还要注意到这个配置文件中有一个 rootpw secret,这个 secret 是 cn=Manager 的密码,以后会用到,不过这里是明文密码,你可以用命令: slappasswd -h {MD5} -s secret 算出加密的密码 {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== 取代配置中的 secret。
3. 启动 openldap
CMD 进入到 c:\openldap 下,运行命令 sldapd -d 1
用可以看到控制台下打印一片信息,openldap 默认是用的 Berkeley DB 数据库存储目录数据的。
4. 建立条目,编辑导入 ldif 文件
1) 新建一个 ldif(LDAP Data Interchanged Format) 文件(纯文本格式),例如 test.ldif,文件内容如下:
dn: o=teemlink
objectclass: top
objectclass: organization
o: develop
2) 执行命令:ldapadd -l test.ldif
5. 使用LDAP Browser进行访问
5.1安装LDAP Browser2.6软件,进行如下操作:
5.2显示效果
5. Java操作LDAP
5.1 用JNDI进访问
package cn.myapps.test;import java.util.Hashtable;import javax.naming.Context;import javax.naming.NamingException;import javax.naming.directory.Attributes;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;public class LdapTest { public void JNDILookup() { String root = "o=teemlink,c=cn"; Hashtable env = new Hashtable(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, "ldap://192.168.0.30/" + root); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=Nicholas,ou=产品,o=teemlink,c=cn"); env.put(Context.SECURITY_CREDENTIALS, "123456"); DirContext ctx = null; try { ctx = new InitialDirContext(env); Attributes attrs = ctx.getAttributes("cn=Nicholas,ou=产品"); System.out.println("Last Name: " + attrs.get("sn").get()); System.out.println("认证成功"); } catch (javax.naming.AuthenticationException e) { e.printStackTrace(); System.out.println("认证失败"); } catch (Exception e) { System.out.println("认证出错:"); e.printStackTrace(); } if (ctx != null) { try { ctx.close(); } catch (NamingException e) { // ignore } } } public static void main(String[] args) { LdapTest LDAPTest = new LdapTest(); LDAPTest.JNDILookup(); }}
5.2 用JLDAP进访问
访问地址:http://www.openldap.org/jldap/ 并下载相关lib
import com.novell.ldap.*;import java.io.UnsupportedEncodingException;public class List{ public static void main(String[] args) { int ldapPort = LDAPConnection.DEFAULT_PORT; int searchScope = LDAPConnection.SCOPE_ONE; int ldapVersion = LDAPConnection.LDAP_V3; boolean attributeOnly = false; String attrs[] = null; String ldapHost = "192.168.0.30"; String loginDN = "cn=Manager,o=teemlink,c=cn"; String password = "secret"; String searchBase = "ou=develop,o=teemlink,c=cn"; String searchFilter = "objectClass=*"; LDAPConnection lc = new LDAPConnection(); try { // connect to the server lc.connect(ldapHost, ldapPort); // bind to the server lc.bind(ldapVersion, loginDN, password.getBytes("UTF8")); LDAPSearchResults searchResults = lc.search(searchBase, // container to search searchScope, // search scope searchFilter, // search filter attrs, // "1.1" returns entry name only attributeOnly); // no attributes are returned // print out all the objects while (searchResults.hasMore()) { LDAPEntry nextEntry = null; try { nextEntry = searchResults.next(); System.out.println("\n" + nextEntry.getDN()); System.out.println(nextEntry.getAttributeSet()); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); // Exception is thrown, go for next entry continue; } } // disconnect with the server lc.disconnect(); } catch (LDAPException e) { System.out.println("Error: " + e.toString()); } catch (UnsupportedEncodingException e) { System.out.println("Error: " + e.toString()); } System.exit(0); }}
5.3 用JDBC-LDAP进访问
访问地址:http://www.openldap.org/jdbcldap/ 并下载相关lib
package jdbcldap;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class JdbcLdap { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Class.forName("com.octetstring.jdbcLdap.sql.JdbcLdapDriver"); String ldapConnectString = "jdbc:ldap://192.168.0.30/o=teemlink,c=cn?SEARCH_SCOPE:=subTreeScope"; Connection con = DriverManager.getConnection(ldapConnectString, "cn=Manager,o=teemlink,c=cn", "secret"); String sql = "SELECT * FROM ou=develop,o=teemlink,c=cn"; Statement sat = con.createStatement(); ResultSet rs = sta.executeQuery(sql); while (rs.next()) { System.out.println(rs.getString(1)); } if (con != null) con.close(); }}
发表评论
-
AD新增用户默认禁用的解决办法
2013-02-21 16:56 2588ajax文件上传 博客http://aokunsang.ite ... -
LDAP成功配置一个集团组织机构案例(继续更新及深层研究中...)
2010-12-11 21:07 2783...LDAP成功配置案例(继续更新及深层研究) 正在进行 ... -
OpenLDAP 综合技术相关网站
2010-12-10 19:49 1360OpenLDAP下载 ( openldap-2.2.29 fo ... -
Openldap安装配置详细记录(Linux )
2010-12-10 19:45 4381#安装zlib # tar xvfz zlib-1.2.3.t ... -
OpenLDAP讲解
2010-12-01 14:46 4464OpenLDAP是LDAP的一种开源实现 Table of ... -
解析LDAP的Schema(v3)
2010-12-01 13:59 27372. Abstract This documen ... -
LDAP之objectClass
2010-12-01 13:46 2443自定义schema的时候不仅要定义attributetype还 ... -
自定义OpenLDAP的schema
2010-12-01 13:44 2430自定义schema的时候要注意定义的名字不能和已有的名字重复, ... -
LDAP基本语法
2010-11-26 20:54 1789基本 LDAP 语法 • =(等 ... -
OpenLDAP+LdapBrowser配置
2010-11-22 09:44 14399相关软件下载: Berkeley-Db: http://dow ... -
LDAP
2010-11-07 12:52 941附件是LDAP相关jar包!!! -
Ldap安装配置
2010-10-22 21:49 2405linux下: 安装openldap ...
相关推荐
【LDAP入门教程介绍】 LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,它源于X.500标准,但比X.500更简洁且可定制。LDAP的核心在于提供一种标准的方式来访问存储在信息目录中的数据,而...
"LDAP入门知识" LDAP(Lightweight Directory Access Protocol)是基于X.500标准的,但是简单多了并且可以根据需要定制。LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP...
本教程将带你从入门到精通,全面理解LDAP的核心概念、存储结构原理、客户端访问工具、服务器实现以及程序访问技术。 ### 第一章 LDAP 有关技术介绍 **第一节 X.500目录服务** X.500是国际电信联盟(ITU-T)制定的...
### 开发LDAP入门:深入解析目录服务的基础与实践 #### LDAP简介 LDAP(Lightweight Directory Access Protocol,轻量级目录访问协议)是一种基于X.500标准的应用层协议,用于构建和管理分布式目录信息。它最初...
根据提供的标题、描述以及部分文档内容,我们可以提炼出与“DB2个人版快速入门”相关的多个知识点。下面将详细介绍这些知识点: ### 1. DB2Connect 版本介绍 DB2Connect 是 IBM 提供的一款软件产品,用于实现不同...
Adldap2, 用于人类的PHP LDAP包 Adldap2 使用LDAP不需要硬处理。Adldap2是一个经过测试的PHP包,它使用 Active Record Pattern 提供LDAP身份验证和目录管理工具。索引快速入门配置文件连接认证查
2. **快速查询**:由于目录数据的结构化特性,LDAP能快速定位和检索数据,尤其适合大规模数据的查询。 3. **标准化**:LDAP遵循国际标准,确保跨平台和跨系统的兼容性。 4. **开放性**:LDAP协议是公开的,允许第三...
2. **查询操作**:通过LDAP查询语言(如LDAP过滤器),可以快速查找目录中的特定信息。 3. **安全特性**:支持SSL/TLS加密,保证数据传输的安全性;通过访问控制指令(ACI)实现细粒度的权限控制。 4. **扩展性**:...
这个压缩包可能还包含了简单的示例,帮助你快速入门。这些示例通常会展示如何初始化连接、执行搜索、处理结果以及进行基本的CRUD(创建、读取、更新、删除)操作。通过研究这些例子,你可以更好地理解如何将LDAP API...
本书《LDAP Directories Explained: An Introduction and Analysis》旨在为读者提供一个全面的LDAP入门指南,不仅介绍了LDAP的基本概念和技术细节,还探讨了其在现代信息技术环境中的应用。 #### 二、LDAP与传统...
- `samples`: 示例配置文件和脚本,帮助用户快速入门。 3. **源码编译与安装** 在深入理解源码之前,需要了解如何编译和安装OpenLDAP。通常,这涉及到配置、编译和安装三个步骤,涉及`./configure`, `make`, `...
"Jumpserver使用快速入门-1"和"Jumpserver使用快速入门-2"是视频教程的核心部分,涵盖了以下几个关键知识点: 1. 用户与角色管理:创建不同的用户账号,分配不同的角色,每个角色对应一组访问权限,确保最小权限...
### DB2 服务器快速入门知识点解析 #### 一、DB2服务器概述 - **DB2**(Database 2)是IBM公司开发的一款关系型数据库管理系统(RDBMS),它支持多种操作系统,如Linux、UNIX和Windows等。 - **版本**:DB2 9.5 版本...
根据提供的信息,我们可以总结出以下关于“IBM DB2 UDB 个人版快速入门(高清PDF版)”的关键知识点: ### 一、概述 - **标题**:“IBM DB2 UDB 个人版快速入门(高清PDF版)”表明这是一份由IBM官方出版的针对DB2 ...
【WebSphere快速入门】 WebSphere是IBM开发的一款企业级应用服务器,它提供了强大的应用程序托管环境,支持Java EE(Java Enterprise Edition)和IBM Liberty Profile等多种应用框架。本快速入门将帮助你理解...
本压缩包包含与LDAP相关的Java库和示例代码,帮助开发者快速入门LDAP的开发。 ### LDAP基础知识 1. **目录服务**: LDAP是一种目录服务协议,不同于数据库系统,它专注于高效地查找和检索数据,而不是存储大量事务...