Windows下搭建LDAP服务器 linux ldap服务器搭建

转:鼠标土豆

五一闲来没事,加上项目正在进行UAT。抽空研究了一下LDAP相关知识。随手做一个记录。

为了方便阅读还是先介绍一下什么是LDAP?

前言、Lightweight Directory Access Protocol:

The Lightweight Directory Access Protocol , orLDAP ,is an application protocol forquerying and modifying directory services runningover TCP/IP .(viawikipedia)。LDAP全称是一个轻量级的目录访问协议,它是建立在TCP/IP基础之上的用来查询和修改目录服务的。这是照着wiki翻译的,但是有人要问了什么是directoryService(目录服务)?

按照wiki的说法的话讲:在软件行业,目录就如同一个字典,他使得通过某一名称去查找绑定在该名称上的值得方式成为一种可能。有点类似Java中Map的概念。adirectory service is simply the software systemthat stores, organizes and provides access to information in adirectory.一个目录服务就是一个简单的软件系统,在这个目录上提供了存取和组织信息的功能。LDAP目录中可以存储各种类型的数据:电子邮件地址、邮件路由信息、人力资源数据、公用密匙、联系人列表,等等。

OK,进入正题。Google搜索 windowsldap服务器,终于找到了一个比较好的流行的:OpenLDAP(点击下载)

一、OpenLDAP安装和配置

安装还是比较简单的,一直next就好。

这里记得把上面2个都选上,将LDAP注册为系统的一个服务,默认安装位置:C:ProgramFilesOpenLDAP,

进入安装目录,编辑slapd.conf文件:

找到

ucdata-path ./ucdata
include ./schema/core.schema

在下面加入:(注意你的系统路径,可能随安装位置不同而稍有差异)

include ./schema/core.schema(这里是和原来有的,如果加入的话就重复包含了,不能正常启动了。应该除这句外都加入)
include./schema/corba.schema
include ./schema/dyngroup.schema
include ./schema/java.schema
include ./schema/misc.schema
include ./schema/cosine.schema
include ./schema/nis.schema
include ./schema/inetorgperson.schema
include ./schema/openldap.schema

这个搞定以后,在同一文件后面的(大概65-66行,修改)

suffix ”o=anotherbug,c=com“ (直接拷贝过去引号会变成中文的。注意引号用英文的,会影响启动)
rootdn ”cn=manager,o=anotherbug,c=com“

还有第70行的位置 : rootpw secret,这里要修改为加密后的密码。

具体操作:

打开命令行,定位到安装目录下,输入:slappasswd -h{MD5} –s “替换为你想要设置的密码,无引号”

将生成的MD5密文:{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==填入原来secret位置。

OK至此配置已经搞定,可以测试一下服务了。打开命令行转到安装目录下输入:sldapd -d1 注意命令是(slapd -d 1)

至此LDAP服务器已经搭建并可以跑起来了.下面要来测试怎么倒入.ldif格式的数据了。

二、建立条目(Entry) ,导入 ldif 后缀名文件

ldif:LDAP Data Interchange Format,基于文本。有两种类型的 LDIF 文件:第一种是描述Directory 条目数据的,第二种是描述更新条目的。我们主要看怎么描述条目的。

打开编辑器(如Editplus,UltraEdit等),新建test.ldif内容如下:

dn: o=anotherbug,c=com
objectClass: dcObject
objectClass: organization
o: anotherbug
dc: com

dn: uid=mousepoato, o=anotherbug,c=com
uid: mousepoato
objectClass: inetOrgPerson
Windows下搭建LDAP服务器 linux ldap服务器搭建
mail: paradise.lsj@gmail.com
userPassword: admin
labeledURI: http://anotherbug.com/blog
sn: Li
cn: test

注意ldif文件对格式的要求非常严格,属性要以冒号和空格与值隔开,并且其他地方不允许有空格。否则当你导入ldif文件时,会提示出现“ldap_add:Invalid syntax (21)”等诸多错误,另外在我机器上测试,ldif对中文支持也还不好,比如我将最后的cn:test改为 cn: 鼠标土豆,导入就会报错。

写完保存到安装目录下。在命令行输入:

ldapadd -c -x -D “cn=manager,o=anotherbug,c=com” -w“刚才替换secret出的密码明文” -f test.ldif

运行命令后结果如下:

注意我们在ldapadd后面加上了 ”–c “参数,他会一直运行不会因错误而终止,比如对系统已经存在的entry命令会提示但不会中止。

三、LDAP查看工具

可能大家看了这么多感觉还是很抽象,我们需要一个GUI看看LDAP到底是个什么东东。

这里推荐两个浏览工具

1、LdapBrowser

这是个Java 开发的 LDAP Browser/Editor 工具,不但跨平台(Windows,Unix-like),而且功能非常完整,速度又快。运行起来的界面时这个样子的。

2、Softrra LDAP Administrator 2009

这是一个比较强大和专业的客户端,涵盖了大多数企业的LDAP服务类型。

一直下一步安装成功后,它的配置也是比较简单的:

新建一个profile,命名为Local_LDAP

配置连接信息

这是完整配置好后的效果

四、通过 JNDI api操作LDAP例子

Javax里面提供的JNDI为我们封装好了对LDAP 的directoryservice进行存取查询的函数,可以方便实用。

贴上我用JUnit4写一个对LADP服务器进行测试的代码供参考:


private static Logger log =Logger.getLogger(TestLdapOper.class);
DirContext context = null;
TestLdap tldap = null;

@Before
public void init() throws NamingException {
tldap = new TestLdap();
context = tldap.getContext();// 获取context
}

@Test
@Ignore
public void testInsert() throws NamingException{
tldap.addEntry(context, “uid=IBM,o=anotherbug,c=com”);
}

@SuppressWarnings(“unchecked”)
@Test
public void testGetAttributes() throws NamingException{
List attNameList = new ArrayList();
attNameList.add(“o”);
attNameList.add(“dc”);
attNameList.add(“objectClass”);
Map map = JNDIUitl.getAttributes(context, “o=anotherbug,c=com”,attNameList);
Iterator keyValuePairs = map.entrySet().iterator();
for (int i = 0; i < map.size(); i++){
Map.Entry entry = (Map.Entry) keyValuePairs.next();
Object key = entry.getKey();
Object value = entry.getValue();
log.info(key + “==key”);
log.info(value + “–value”);
}
}

@SuppressWarnings(“unchecked”)
@Test
public void testGetAttriValues() throws NamingException{
assertEquals(“anotherbug.com”, JNDIUitl.getAttributeValues(context,“o=anotherbug,c=com”, “dc”).get(0) + “”);
List lst = new ArrayList();
lst = JNDIUitl.getAttributeValues(context, “o=anotherbug,c=com”,“objectClass”);
assertEquals(“organization”, lst.get(1) + “”);
for (int i = 0; i < lst.size(); i++){
log.info(lst.get(i));
log.info(ReflectionToStringBuilder.toString(lst.get(i)).toString());
}
}

@SuppressWarnings(“unchecked”)
@Test
public void testSearchContext() throws NamingException{
List list = JNDIUitl.searchContextSub(context,“o=anotherbug,c=com”, “(objectClass=*)”);
for (int i = 0; i < list.size(); i++){
log.info(list.get(i));
}
}

@After
public void destroy() throws NamingException{
context.close();
}


补充

另外一款LDAP软件 LDAP Admin Tool Professional

官方地址:http://www.ldapsoft.com/index.html

C# 到LDAP 验证的代码

在我的空间文件夹里放着呢(本站的SkyDrive

http://cid-0a71bbfb566de45c.skydrive.live.com/self.aspx/%e8%ae%a1%e7%ae%97%e6%9c%ba%e7%b1%bb%e6%96%87%e4%bb%b6%e5%a4%b9/ldap4%5E_blog.rar

  

爱华网本文地址 » http://www.413yy.cn/a/25101017/356705.html

更多阅读

Windows下.CUE文件怎么使用 .cue是什么文件

Windows下.CUE文件怎么使用——简介 我们下载的东西里面,有可能会遇到以cue为后缀的文件,这是一种光盘映像格式,压缩能力比较强。个人感觉在游戏包中应用比较多。Windows下.CUE文件怎么使用——工

怎样使用windows下shutdown运行命令 精 windows shutdown命令

我们的电脑经常会执行一些任务,比如下载资料、一些视频文件格式转换等等!我知道知道电脑关闭还需要多长时间,也就是这些任务执行完毕还需要多长的时间!有时候我们会有急事或者想出去玩,想电脑快点完成工,又不想呆在电脑旁边看着它!我们就

windows下刷新主板bios 精 华硕主板怎么刷新bios

相信不少想更新主板bios的人,看到网络中dos下更新,就会头疼,各种命令。下面介绍一种在windows下刷新的一种方法,本人亲自测试,没有问题。(此法针对AWARD的bios)windows下刷新主板bios 精——AWARD BIOS刷新工具WinFlash 1.97 中文版windo

Windows Server 2008 DHCP服务器架设攻略 windows7 dhcp server

在此之前我们已经介绍了如何在Windows Server 2008中部署IIS、MySQL服务器和防火墙,今天崔氏IT网络学院小编与大家共同分享如何在Windows Server 2008中安装和配置DHCP服务器的方法。Windows Server 2008 DHCP服务器架设攻略——工具

声明:《Windows下搭建LDAP服务器 linux ldap服务器搭建》为网友如花的旋律分享!如侵犯到您的合法权益请联系我们删除