当前位置:首页 > CN2资讯 > 正文内容

Windows 下搭建LDAP服务器 pxe服务器搭建windows

7小时前CN2资讯

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

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

前言、Lightweight Directory Access Protocol:

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

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

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

一、OpenLDAP安装和配置

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

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

进入安装目录,编辑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 -d 1 注意命令是(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
mail: paradise.lsj@
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 的directory service进行存取查询的函数,可以方便实用。

贴上我用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)

  • guangzhi

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/30213.html

    分享给朋友:

    “Windows 下搭建LDAP服务器 pxe服务器搭建windows” 的相关文章

    香港虚拟主机CN2是什么牌子的电脑型号?

    近年来,香港虚拟主机CN2作为一款备受瞩目的电脑型号,逐渐在市场中崭露头角。无论是其独特的设计理念,还是强大的性能表现,都让这款产品成为了许多消费者和专业人士的首选。很多人对“香港虚拟主机CN2”背后的品牌归属产生了浓厚的兴趣,到底是哪个品牌推出的这款产品?它的市场定位又是怎样的呢?我们需要明确“香...

    RackNerd虚拟主机服务评测:高性价比的选择与多样化方案

    RackNerd是一家相对年轻但极具潜力的虚拟主机商,自2017年成立以来,一直致力于为客户提供高性价比的服务。作为我在寻找虚拟主机时发现的一家重要供应商,他们的服务范围非常广泛,包括虚拟主机、VPS主机、独立服务器以及服务器托管等,我着实被他们多样的产品所吸引。 RackNerd不仅限于某个特定地...

    香港节点:全球数据传输的关键连接点

    在讨论香港节点时,最直接的概念就是它们作为互联网的关键连接点。这些节点不仅仅是简单的数据传输站,更是互联网生态系统中不可或缺的一部分。香港节点能够发送、接收或转发信息,确保数据流在全球范围内的高效流动。想象一下,在这个信息高度互联的时代,没有这些节点,我们是多么难以获取实时信息和全球数据。 香港节点...

    全面了解扩容:定义、分类及最佳实践

    扩容的定义与重要性 扩容这个词听起来似乎很简单,但它其实蕴含了很多技术细节和实际应用。简单来说,扩容就是对已有系统或设备的能力进行增强,尤其是在存储或处理能力上。想象一下,当你的业务正在快速增长,客户数量激增,原本的系统可能会面临压力,这时扩容就显得尤为重要。通过扩容,我可以在需要的时候增加更多的存...

    DC2:动画创作、网络安全与汽车文化的多重魅力探索

    DC2 可谓是一个充满魔力的词汇,它在不同的领域中有着不同的意义。这种多样性让它成为了动画爱好者、汽车迷,甚至网络安全专家的共同话题。我对这些含义的探索,给我带来了许多启发和乐趣,让我对这个小小的组合字母有了更深刻的理解。 首先,提到 DC2,许多人可能会想到 DC2 动画软件。这款软件不仅在手机动...

    如何使用一键同步脚本提高自媒体内容发布效率

    一键同步脚本是一种非常实用的自动化工具,现今在很多领域都可以看到它的身影。作为一名热爱分享与创作的人,我发现无论是自媒体内容发布、数据库备份迁移,还是文件同步,这类脚本都能大大简化我的工作流程。它们不仅能提高工作效率,还能减少出错的可能性,实现工作自动化。 一键同步脚本的核心在于其定义。简单来说,这...