java windows ldap_Windows下OpenLDAP的安装与配置

本文主要参考官方文档:http://www.openldap.org/doc/admin24/quickstart.html

和网上流传的教程:http://www.lifv.cn/?p=462

OpenLDAP下载地址:http://download.bergmans.us/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe 下载后点击安装即可。

配置sldap.conf :在安装目录下找到sldap.conf ,修改配置如下:

4f1150b881333f12a311ae9ef34da474.pngsuffix"dc=example,dc=com"4f1150b881333f12a311ae9ef34da474.pngrootdn"cn=Manager,dc=example,dc=com"4f1150b881333f12a311ae9ef34da474.pngrootpw secret

启动OpenLDAP:进入cmd命令行,跳转到OpenLDAP安装目录下,运行:

4f1150b881333f12a311ae9ef34da474.pngslapd-d1

用可以看到控制台下打印一片信息,openldap 默认是用的 Berkeley DB 数据库存储目录数据的。

再开一个cmd,跳转到OpenLDAP安装目录下。

测试OpenLDAP是否正常启动:

4f1150b881333f12a311ae9ef34da474.pngldapsearch-x-s base (objectclass=*) namingContexts

官方文档里,这一条命令加了些单引号,但带单引号的命令在Windows环境下跑不通。后面的命令也都避免

使用引号。

如果返回:

4f1150b881333f12a311ae9ef34da474.pngdn: 

4f1150b881333f12a311ae9ef34da474.pngnamingContexts: dc=example,dc=com

则说明OpenLDAP成功启动

增加一个条目:

1.做一个LDIF文件

2.使用ldapadd命令

1.在安装目录下,新建文件example.ldif,输入如下内容:

4f1150b881333f12a311ae9ef34da474.pngdn: dc=example,dc=com 

4f1150b881333f12a311ae9ef34da474.pngobjectclass: dcObject 

4f1150b881333f12a311ae9ef34da474.pngobjectclass: organization 

4f1150b881333f12a311ae9ef34da474.pngo: Example Company 

4f1150b881333f12a311ae9ef34da474.pngdc: example 

4f1150b881333f12a311ae9ef34da474.png

4f1150b881333f12a311ae9ef34da474.pngdn: cn=Manager,dc=example,dc=com 

4f1150b881333f12a311ae9ef34da474.pngobjectclass: organizationalRole 

4f1150b881333f12a311ae9ef34da474.pngcn: Manager

注意:在文档每一行的开头和结尾不要有空格,文档最后最好也别回车。建议不要拷贝,用手敲这几行。

2.cmd在安装目录下,运行:

4f1150b881333f12a311ae9ef34da474.pngldapadd-x-D cn=Manager,dc=example,dc=com-W-f example.ldif

可能会要求输入密码:secret (配置文件里写的这个密码)

添加条目成功后,会有提示: adding new entry cn=Manager,dc=example,dc=com

简单查询:

4f1150b881333f12a311ae9ef34da474.pngldapsearch-x-b dc=example,dc=com (objectclass=*)

4f1150b881333f12a311ae9ef34da474.png

查询成功后,会返回刚才插入的条目。

JNDI连接OpenLDAP

Java的JNDI接口很强大,可以连接LDAP服务。

importjava.util.Hashtable;importjavax.naming.Context;importjavax.naming.NamingException;importjavax.naming.directory.DirContext;importjavax.naming.directory.InitialDirContext;publicclassTestOpenLDAP {/***@paramargs*/publicstaticvoidmain(String[] args) {//TODO Auto-generated method stubTestOpenLDAP LDAPTest1=newTestOpenLDAP();

String root="dc=example,dc=com";//rootHashtable env=newHashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");

env.put(Context.PROVIDER_URL,"ldap://localhost/"+root);

env.put(Context.SECURITY_AUTHENTICATION,"simple");

env.put(Context.SECURITY_PRINCIPAL,"cn=Manager,dc=example,dc=com");

env.put(Context.SECURITY_CREDENTIALS,"secret");

DirContext ctx=null;try{

ctx=newInitialDirContext(env);

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}

}

}

}

问题:

1. 图形化界面LDAPBrowser的配置

下载地址: http://files.blogjava.net/Unmi/LdapBrowser282.rar

解压后进入LdapBrowser282目录,打开配置文件OpenLdap_Localhost.cfg

修改配置:

4f1150b881333f12a311ae9ef34da474.pngbasedn=dc=example,dc=com

4f1150b881333f12a311ae9ef34da474.pngmanagerdn=cn=Manager,dc=example,dc=com

运行lbe.bat进入图形界面后选择连接OpenLdap_Localhost即可。

2. OpenLDAP的语法,内置ObjectClass

LDAP学习

entry(record,directory object)  条目 一条数据 相当于数据表的一条记录

entry由若干个attribute组成,objectclass是必须的attribute,用于描述entry的schema

attribute是name/value对形式,例如cn = liuxuanyu cn = mengke 一个name 可以对应多个值

container是一种特殊的entry,为数据的组织和管理提供一个继承体系结构,例如ou

任何entry都可以在特定的情况下变成container

与关系数据库的比较:

LDAP读操作性能高,写操作性能不如DB,DB 读写均可,读操作性能不如LDAP

数据结构不同

LDAP适合于存储继承结构的数据

namespace

DN (distinguish name) DN是entry的名字,entry的唯一标识

RDN (relative distinguish name) entry在某个容器范围内的标识

CN (common name) 常用名称 习惯上被用作RDN

DC (domain component) 域名

LDAP只允许树形结构

object identifier (OID) 例如:2.5.4.3 它是属性类型的标识符

schema

object class 定义了entry的类型

有三种类型的object Class: 抽象类、辅助类和结构化类。

构造schema的方式 :

1. 组合现有的object class

2. 扩展现有的object class 继承 使用辅助类(实际上是一种聚合关系)

The subschema publishes the schema to clients

inetOrgPerson is a contemporary definition for a person entry RFC 2798

3. JLDAP与JNDI的比较

JLDAP是由novel开发的,原是针对Novel的NDS目录设计的JAVA访问工具。NOVEL的NDS和网景(NETSCAPE)的目录是工具界最早的目录产品。JLDAP并非JNDI的服务供应者,而是同一抽象层次下的访问工具集。与JNDI-LDAP相比,JLDAP更接近于类关系数据库的访问方式。

NDS是遵守LDAP协议的并进行了扩展的类MAD产品。而NOVEL也已把JLDAP捐献给了OPENLDAP开源项目,可以世界范围内自由使用。与 JNDI相比,JLDAP无须继承DirContext才能实现添加,也无需预先生成添加的类,可以象普通数据访问那样,生成连接,然后使用::add方法添加。这样,添加的灵活性要强于JNDI。

但由于JLDAP目前是访问NDS,因此,它不具备JNDI完全面向对象存储的能力,对于高级的LDAP应用,JLDAP不是合适的选择。

4. OpenLDAP的深入管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值