Windows下安装使用OpenLDAP完整版
Windows 下搭建LDAP服务器

Windows 下搭建LDAP服务器五一闲来没事,加上项目正在进行UAT。
抽空研究了一下LDAP相关知识。
随手做一个记录。
为了方便阅读还是先介绍一下什么是LDAP?前言、Lightweight Directory Access Protocol:The Lightweight Directory Access Protocol , or LDAP ,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的概念。
a directory 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 ./ucdatainclude ./schema/core.schema在下面加入:(注意你的系统路径,可能随安装位置不同而稍有差异)include ./schema/core.schema (这里是和原来有的,如果加入的话就重复包含了,不能正常启动了。
apachedsldap配置使用说明

ApacheDS LDAP 配置使用说明Apache LDAP包括ApacheDS服务和Apache Directory Studio RCP工具。
下面的内容主要介绍ApacheDS服务和ApacheDS工具。
ApacheDS服务下载地址:/apacheds/2.0/downloads.html 下载独立的Apache Directory Studio的RCP程序:/studio/安装Eclipse插件:/studio/update/2.x/一、安装ApacheDS服务安装ApacheDS服务器,在ApacheDS官网下载最新的服务器,目前的版本是ApacheDS2.0.0-M8 ,可以根据需要下载适合自己的版本:如Windows系统:1、可以下载“Download Windows installer”安装版,ApacheDS的安装比较简单,没有什么特殊的设置。
在ApacheDS 安装完成后要启动ApacheDS服务。
路径如下:控制面板---à管理工具---à服务--àApache Directoryserver,ApacheDS的监听端口默认为10389。
2、还可以下载“Download Archivezip/tar.gz",解压apacheds-2.0.0-M8.tar包,然后在apacheds-2.0.0-M8目录下的bin目录,点击ApacheDS.bat 可启动服务。
也可以将此服务设置成系统服务。
在每次机器启动时会自动开启。
二、Apache Directory Studio使用说明Apache Directory Studio 是一个LDAP 的工具平台,用来连接到任何LDAP 服务器并进行管理和开发工作。
主要功能:LDAP浏览器、LDIF编辑器、嵌入式ApacheDS、ACI编辑器。
1、安装Apache directory studio该软件是ApacheDS的一个客户端工具。
Linux系统下安装配置 OpenLDAP + phpLDAPadmin

Linux系统下安装配置 OpenLDAP + phpLDAPadmin实验环境:操作系统:Centos 7.4服务器ip:192.168.3.41运行用户:root网络环境:InternetLDAP(轻量级目录访问协议)是一个能实现提供被称为目录服务的信息服务,也是一套用户认证体系系统;一般在大型企业、学校、政府单位使用的比较多,LDAP是由4部分组成,这4部分分别是slapd(独立LDAP守护进程)、slurpd(独立的LDAP更新复制守护进程)、LDAP协议库、工具软件和示例客户端(phpLDAPadmin),目录服务是一种特殊的数据库系统,用来存储用户信息的数据库,读写速度非常快,扩展性非常强,可以实现与地方系统直接对接整合起来统一管理用户信息。
LDAP说起来也不简单,但是ALDP在Linux应用范围是比较广泛的,如果想要深入的了解LDAP,建议去看下刘遄老师《Linux就该这么学》这本教程,里面解释的非常详细,也可以在百度输入此书名去官网看,想要在Linux部署还是推荐这本书去系统的学习,对初学者还是很有版本的,这篇文章搭建ldap+phpldapadmin也是在Linux环境下运行的,所以还是需要Linux基础才能看懂下面的配置步骤。
1、安装OpenLDAP[root@centos7 ~]# yum install openldap-servers openldap-clients -y[root@centos7 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG [root@centos7 ~]# ll /var/lib/ldap/DB_CONFIG-rw-r--r--. 1 root root 845 Aug 1 10:04 /var/lib/ldap/DB_CONFIG[root@centos7 ~]# chown ldap. /var/lib/ldap/DB_CONFIG //授权配置文件[root@centos7 ~]# more /etc/passwd|grep ldapldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin[root@centos7 ~]# systemctl start slapd.service //启动slapd服务[root@centos7 ~]# systemctl enable slapd.service //设置开机自动启动slapd服务2、设置OpenLDAP管理员密码[root@centos7 ~]# slappasswdNew password: //passwordRe-enter new password:{SSHA}d5pkA0TU6b+8/kEoMIxJ59QofCLV为“olcRootPW”指定上面生成的密码[root@centos7 ~]# vim chrootpw.ldifdn: olcDatabase={0}config,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}d5pkA0TU6b+8/kEokgQeMIxJ59QofCLV[root@centos7 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={0}config,cn=config"3、导入基本模式[root@centos7 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=cosine,cn=schema,cn=config"[root@centos7 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif SASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=nis,cn=schema,cn=config"[root@centos7 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f/etc/openldap/schema/inetorgperson.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0adding new entry "cn=inetorgperson,cn=schema,cn=config"4、在LDAP DB上设置域名,生成目录管理器密码[root@centos7 ~]# slappasswdNew password:Re-enter new password:{SSHA}Oq61fgUFW9+ItZboTaW1+VbLuAYst7zw注意:下面配置文件这里得注意每一个属性:后必须有空格,但是值的后面不能有任何空格[root@centos7 ~]# vim chdomain.ldif# replace to your own domain name for "dc=***,dc=***" section# specify the password generated above for "olcRootPW" sectiondn: olcDatabase={1}monitor,cn=configchangetype: modifyreplace: olcAccessolcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=srv,dc=world" read by * nonedn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcSuffixolcSuffix: dc=srv,dc=worlddn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDNolcRootDN: cn=Manager,dc=srv,dc=worlddn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcRootPWolcRootPW: {SSHA}Oq61fgUFW9+ItZboTaW1+VbLuAYst7zwdn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcAccessolcAccess: {0}to attrs=userPassword,shadowLastChange bydn="cn=Manager,dc=srv,dc=world" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * readolcAccess: {2}to * by dn="cn=Manager,dc=srv,dc=world" write by * read[root@centos7 ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0modifying entry "olcDatabase={1}monitor,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"[root@centos7 ~]# vim basedomain.ldif# replace to your own domain name for "dc=***,dc=***" sectiondn: dc=srv,dc=worldobjectClass: topobjectClass: dcObjectobjectclass: organizationo: Server Worlddc: Srvdn: cn=Manager,dc=srv,dc=worldobjectClass: organizationalRolecn: Managerdescription: Directory Managerdn: ou=People,dc=srv,dc=worldobjectClass: organizationalUnitou: Peopledn: ou=Group,dc=srv,dc=worldobjectClass: organizationalUnitou: Group[root@centos7 ~]# ldapadd -x -D "cn=Manager,dc=srv,dc=world" -W -f basedomain.ldif Enter LDAP Password: //输入上面设置的目录管理器密码 passwordadding new entry "dc=srv,dc=world"adding new entry "cn=Manager,dc=srv,dc=world"adding new entry "ou=People,dc=srv,dc=world"adding new entry "ou=Group,dc=srv,dc=world"[root@centos7 ~]# ldapsearch -x -b "cn=Manager,dc=srv,dc=world"# extended LDIF## LDAPv3# base <cn=Manager,dc=srv,dc=world> with scope subtree# filter: (objectclass=*)# requesting: ALL## Manager, srv.worlddn: cn=Manager,dc=srv,dc=worldobjectClass: organizationalRolecn: Managerdescription: Directory Manager# search resultsearch: 2result: 0 Success# numResponses: 2# numEntries: 15、设置Firewalld,如果未启用防火墙关闭,忽略[root@centos7 ~]# firewall-cmd --add-service=ldap --permanent[root@centos7 ~]# firewall-cmd --reload6、安装并配置Apache[root@centos7 ~]# yum install httpd-devel.x86_64 httpd.x86_64 -y[root@centos7 ~]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak [root@centos7 ~]# vim /etc/httpd/conf/httpd.conf# line 86: change to admin's email addressServerAdmin root@srv.world# line 95: change to your server's nameServerName www.srv.world:80# line 151: changeAllowOverride All# line 164: add file name that it can access only with directory's nameDirectoryIndex index.html index.cgi index.php# add follows to the end //在尾部新增# server's response headerServerTokens Prod# keepalive is ONKeepAlive On[root@centos7 ~]# systemctl start httpd.service[root@centos7 ~]# systemctl enable httpd.service[root@centos7 ~]# firewall-cmd --add-service=http --permanent //防火墙排除httpd服务,如果没有启用防火墙,此步骤可以忽略。
openldap在windows安装配置

Openldap在windows下的安装及配置准备工作Openldap官网只提供了linux平台相关安装文件,windows平台的安装包可以在以下网站下载:erbooster.de/download/openldap-for-windows.aspx(本文使用:2.4.34)/projects/openldapwindows/files/http://sourceforge.jp/projects/openldapwin32/releases/安装过程按照提示一直next,直到安装完成:安装完成后,在系统服务中,找到openldap service,根据自己的需要将启动类型修改为自动或手动。
配置过程安装目录:E:\servers\OpenLDAP编辑文件:E:\servers\OpenLDAP\slapd.conf 修改如下内容suffix "dc=maxcrc,dc=com"rootdn "cn=Manager,dc=maxcrc,dc=com"修改为:suffix "dc=merit "rootdn "cn=Manager,dc=merit"新建一个文件:E:\servers\OpenLDAP\merit.ldif 内容如下dn: dc=meritobjectClass: domainobjectClass: topdc: meritdn: ou=erds,dc=meritobjectclass: topobjectclass: organizationalUnitou: erdsdn: ou=tim,dc=meritobjectclass: topobjectclass: organizationalUnitou: tim在系统服务中,找到openldap service,停止服务再控制台中切换到openldap安装目录下执行命令:Slapadd–v –l merit.ldif运行结果如下:在系统服务中再启动openldap service即可。
openldap slapd.exe用法

openldapslapd.exe用法OpenLDAP是一个广泛使用的开源LDAP(轻量级目录访问协议)服务器,它提供了高效、可靠和可扩展的目录服务。
Slapd.exe是OpenLDAP服务器进程,负责管理目录数据库的存储和检索。
本文将详细介绍Slapd.exe的用法,帮助读者更好地理解和使用这个重要的组件。
一、安装和配置OpenLDAP首先,确保已正确安装OpenLDAP服务器,并按照官方文档设置好数据库和网络配置。
一般来说,安装过程包括选择安装类型、配置网络接口、设置数据存储路径等步骤。
二、启动和停止Slapd.exe启动Slapd.exe可以通过任务管理器或命令行来完成。
在Windows上,可以使用以下命令启动Slapd.exe:`netstartslapd`停止Slapd.exe同样可以使用任务管理器,或者使用命令行:`netstopslapd`三、配置Slapd.exe参数Slapd.exe有许多可配置的参数,可以根据需要进行调整。
常用的参数包括:*`-d`:显示调试信息,用于诊断问题。
*`-u`:指定用于认证的用户名和密码。
*`-h`:指定Slapd.exe的宿主路径。
*`-p`:指定数据库端口号。
*`-b`:指定搜索范围的起始目录。
这些参数可以在启动Slapd.exe时通过命令行传递,例如:`slapd.exe-uusername-p389-b"dc=example,dc=com"`四、管理数据库内容通过Slapd.exe,可以管理LDAP目录数据库的内容。
可以使用LDAP客户端工具(如OpenLDAP工具或MicrosoftActiveDirectory工具)连接到OpenLDAP服务器,并执行各种操作,如添加、更新、删除条目,以及查询数据库等。
五、常见问题和解决方法在使用Slapd.exe过程中,可能会遇到各种问题。
以下是一些常见的解决方法:*数据库连接问题:检查网络配置和数据库路径设置是否正确。
联想智能超算平台LiCO安装手册

联想智能超算平台LiCO快速安装手册目录1. 下载安装包 (3)2. 如果集群已经存在,请参考附录2 (3)3. 配置集群中节点的IMM IP并创建IPMI账号 (3)4. 安装头结点操作系统 (4)5. 安装lico-deploy (5)6. 部署集群 (5)7. 部署LiCO web (16)8. 安装LiCO 报警通知组件 (18)附录1. 集群节点配置文件nodes.csv的编辑 (20)附录2. 集群已经存在的情况下部署LiCO web portal (22)附录3. ThinkServer Support(只针对ThinkServer) (26)附录4. 通过BMC设置bootorder (可选) (28)附录5:微信公众号的申请认证流程 (29)附录6:在非头节点上部署报警通知组件 (30)1.下载安装包1.下载操作系统安装文件LiCO支持的操作系统版本是CentOS 6.5/6.8/7.3和Redhat 6.5/6.8/7.3。
如果要安装的操作系统是CentOS 6.5/6.8, 从开发team的ftp上需要下载两个CentOS的iso文件,其中CentOS-*-DVD1.iso用来安装头节点的操作系统,CentOS-*-DVD.iso用来在LiCO中作为yum 源。
ftp://10.240.208.41/packages/CentOS-6.5-x86_64-bin-DVD1.isoftp://10.240.208.41/packages/CentOS-6.5-x86_64-DVD.isoftp://10.240.208.41/packages/CentOS-6.8-x86_64-bin-DVD1.isoftp://10.240.208.41/packages/CentOS-6.8-x86_64-DVD.iso如果要安装的操作系统是redhat或CentOS 7.3需要用户提供redhat或CentOS 7.3的iso文件,安装头结点的iso文件和作为LiCO的yum源的文件是同一个iso,因此只需要一个iso文件。
在windows下安装open的发法
在windows下安装open的发法一般在Windows系统上使用Open作为服务器的应该不是很多,相反,在Windows下用Open作为客户端接入的应该非常多,尤其是XP这种桌面系统或者Windows 2003 Server作为客户端。
应用也是非常多的。
这里我仅仅做了在Windows 2003 Server上的Open客户端,其实要做成Server的话,也差不多。
系统环境:Windows 2003 Server。
双路网卡,一路接192.168.0.0/24网段,此网段出局,网关为192.168.0.101。
另一路接192.168.1.0/24网段。
让此台Win2k3作为Client段接入之前交代过的Open Server。
Open Server的IP地址为123.123.123.233。
在Windows下使用的是基于NT系统的安装包open-2.0.9-gui-1.0.3-install.exe 下载地址:/softs/120505.html安装:双击+下一步+完成(这里我使用的默认安装路径C:\Program Files\Open )1.首先通过找到安装的路径,并且查看下面有些什么东西。
可以通过资源浏览器或者Cmd,个人认为Cmd可能看的比较清楚。
(另外下面dir出来的东西当中很多其实是默认没有的,是我后来加进去的,比如一些Client的证书密钥以及ta密钥等等,要添加什么东西,放在什么位置,之后我都会详细讲。
)---------------------------------------------------------------Microsoft Windows [Version 5.2.3790](C) Copyright 1985-2003 Microsoft Corp.切换工作目录到Open的默认安装路径下C:\Documents and Settings\Administrator>cd C:\Program Files\Open通过dir命令看看安装路径下面有些什么内容C:\Program Files\Open>dirVolume in drive C is systemVolume Serial Number is 785C-92D5Directory of C:\Program Files\Open2007-08-28 16:48 .2007-08-28 16:48 ..2007-08-28 16:34 bin2007-08-27 14:09 1,233 ca.crt (这个是CA根证书文件,是从Server端拿过来的。
TongWeb5.0第三方产品使用指南
TongWeb5.0第三⽅产品使⽤指南T ongT ec h?TongWeb 5.0第三⽅产品使⽤指南东⽅通科技⽬录T ongT ech? (1)1.Apache的使⽤ (3)1.1. 实现Apache与应⽤服务器之间负载均衡------AJP通道 (3)1.1.1. mod_jk.conf⽂件⽰例 (5)1.1.2. workers.properties⽂件⽰例 (6)1.1.3. 配置TongWeb5.0 (7)1.2. 实现Apache与应⽤服务器之间负载均衡------⽤代理模式 (8)1.2.1. Apache代理功能简介 (8)1.2.2. apache配置的步骤 (8)1.3. 配置session亲和 (10)1.3.1. session亲和概述 (10)1.3.2. session亲和配置 (10)1.4. 在Win32平台上安装配置Apache2.x with SSL⽀持 (10)2.证书制作⼯具 (12)2.1. 使⽤OpenSSL制作证书 (12)3.LDAP服务器 (13)3.1. OpenLDAP (13)3.1.1. 在Windows平台上安装并运⾏LDAP服务器 (13)3.1.2. 导⼊LDIF(LDAP Data Interchange Format)⽂件 (14)3.1.3. LDAP查看⼯具 (16)4.JMS Server (18)4.1. ActiveMQ (18)4.1.1. ActiveMQ配置JAAS安全认证 (18)1.Apache的使⽤1.1.实现Apache与应⽤服务器之间负载均衡------AJP通道1.安装AJP插件z windows平台安装AJP插件o从/doc/c88b4ad276a20029bd642d0f.html /download-connectors.cgi下载for Apache的JK⼆进制模块。
⽬前可⽤的最新版本的JK⼆进制模块是mod_jk-1.2.26-httpd-2.2.4.so。
系统安装手册-Windows教程文件
系统安装手册-W i n d o w s目录一、安装文件获得位置 (3)二、第三方软件安装 (3)三、IE S600系统的安装 (5)四、修改环境变量 (6)五、修改配置文件 (7)六、安全配置 (13)七、运行程序。
(14)八、附录: (17)一、安装文件获得位置必须使用”\\172.20.2.121\tools\VS2005 SP1 下 ACE 5.5 + Qt 3.3.8 + Orbacus 4.3.2”上预编译好的ACE_wrappers_5_5.rar,Qt.rar,IONA.rar。
可以从”\\yf-backup\tools\”上找到其它安装包。
二、第三方软件安装1.ACE、Boost、Qt、Corba安装将ACE_wrappers_5_5.rar 解压到D:\ACE_wrappers_5_5将boost_1_33_1.tar.gz 解压到D:\boost_1_33_1将Qt.rar 解压到D:\qt\3.3.8将IONA.rar 解压到D:\IONA2.Winrar 解压缩软件的安装。
3.daemon403-x86.exe 虚拟光驱的安装。
4.vs2005 用虚拟光驱安装,然后在安装vs2005的sp1补丁。
注意:在选择安装种类的时候,自定义选择中除去安装vb、c#、vj等用不到的资源,只保留vc++,.net framework这样能加快安装,并且在安装前要检查是否已经安装.net framework如果已经安装需要先卸掉,在安装sp1补丁,一定要保证c 盘空间足够大,一般设为15-20G,安装补丁时要保证有至少2G的空间能使用,有时虽然安装提示空间不足,但可以使用,检查方法是看qt中的designer程序能否使用。
注:安装补丁时,C盘剩余空间尽量要大。
如果C盘空间不足时,可能出现错误:1718,参考修改办法:●单击"开始",单击"运行",键入 control admintools,然后单击"确定"。
U盘和硬盘安装RHEL6.1
U盘安装RHEL6.11. 安装_UltraISO2. 打开_镜像文件3. 选择_写入硬盘镜像4. 选择_U盘5. 点击_写入(写入方式usb-zip or usb_hdd)6. 写入成功后6.1. 如果U盘为8G,请将所要安装的系统ISO镜像复制到U盘内。
6.2. 如果U盘为4G,请将U盘内的Packages文件夹删掉,保留image文件夹,而后再将所要安装的系统ISO镜像复制到U盘根目录内。
7. 重启计算机8. 在boot 选项中选择USB为第一启动项(USB_zip or USB_HDD)9. 进入安装过程,过程同下硬盘安装。
Windows7下硬盘安装RHEL 6.11.首先,大概需要一个10g的fat32格式分区的盘,笔者这里为e盘分了10g。
2.下载rhel-server-6.1-i386-dvd.iso3.将rhel-server-6.1-i386-dvd.iso解压缩到e盘,并且将镜像文件也复制到e 盘中(这步很重要,不仅需要解压缩,而且也需要镜像文件)。
4.将e:\isolinux\下的vmlinuz和initrd.img,复制到c盘中(系统盘),这里isolinux为rhel-server-6.1-i386-dvd.iso镜像里面的一个文件。
5.下载EasyBCD,并且安装好。
(笔者这里下载的为EasyBCD 2.1)6.打开EasyBCD,选中Add New Entry,如图:7.点击Add New Entry后,点击NeoGrub,然后再点击Install:8.点击Install后,再点击Configure:9.点击configure后,会出现menu.lst文本(实际放在C:\NST目录下),在文本里添加如下几行文字:title install redhat6.1kernel (hd0,1)/vmlinuzinitrd (hd0,1)/initrd.img(这里(hd0,1)代表了c盘,即为系统盘,因为window7下默认有个System Reserved—100m空间的盘,这个盘代表了(hd0,0))10.然后重启,选择NeoGrub方式启动,然后选中镜像的时候,选择镜像放的盘(最初的查找是查找的解压缩后的镜像),然后再继续一步步安装,然后在安装的时候,出现了一个选择导入启动项的,这之后安装是用到了镜像的,这就是为什么还需要镜像的原因),然后一步步操作下去,就可以完成了安装。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LDAP:(轻量级目录访问协议,Lightweight Directory Access Protocol)它是基于 X.500标准的,但是简单多了并且可以根据需要定制。
与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。
目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它成树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。
目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,数据修改使用简单的锁定机制实现All-or-Nothing,不适于存储修改频繁的数据。
所以目录天生是用来查询的,就好象它的名字一样。
现在国际上的目录服务标准有两个,一个是较早的X.500标准,一个是较新的LDAP标准。
LDAP诞生的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能,它为读密集型的操作进行专门的优化。
因此,当从LDAP服务器中读取数据的时候会比从专门为OLTP优化的关系型数据库中读取数据快一个数量级。
LDAP常用术语解释:DN:distinguished name。
在LDAP目录中的所有记录项都有一个唯一的DN CN,OU,DC都是LDAP连接服务器的端字符串中的区别名称;LDAP连接服务器的连接字串格式为:ldap://servername/DN其中DN有三个属性,分别是CN,OU,DCLDAP是一种通讯协议,如同HTTP是一种协议一样的!在LDAP目录中。
uid(User ID)CN (Common Name)DC (Domain Component)OU (Organizational Unit)SN (surname)An LDAP 目录类似于文件系统目录.下列目录:DC=redmond,DC=wa,DC=microsoft,DC=com如果我们类比文件系统的话,可被看作如下文件路径:Com/Microsoft/Wa/Redmond例如:CN=test,OU=developer,DC=domainname,DC=com在上面的代码中cn=test代表一个用户名,ou=developer代表一个active directory中的组织单位。
这句话的含义是test这个对象处在域的developer组织单元中。
OpenLDAP安装及试用现在市场上有关 LDAP的产品已有很多,各大软件公司都在他们的产品中集成了LDAP服务,如Microsoft的 ActiveDirectory、iPlanet的iPlanet Directory Server(现已更名为:Sun Java System Directory Server)、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。
OpenLDAP则是LDAP的开源实现,它比商业产品一点也不差,而且源码开放。
1. 下载安装 openldap for windows,版本2.2.29下载地址:/openldap/openldap-2.2.29/openldap-2.2.29-db-4.3.29-openssl-0.9.8a-win32_Setup.exe安装很简单,一路 next 即可,假设我们安装在 D:/openldap2. 配置 openldap,编辑 slapd.conf 文件1)、打开 D:/openldap/slapd.conf,找到ucdata-path ./ucdatainclude ./schema/core.schema,在它后面添加include ./schema/cosine.schemainclude ./schema/inetorgperson.schema接下来的例子只需要用到以上三个 schema,当然,如果你觉得需要的话,你可以把其他的 schema 全部添加进来include ./schema/corba.schemainclude ./schema/dyngroup.schemainclude ./schema/java.schemainclude ./schema/misc.schemainclude ./schema/nis.schemainclude ./schema/openldap.schema2)、下面我们做一个示例:在中国(cn)的tt公司添加一个系统管理员sa.需要在 slapd.conf 配置文件中,找到suffix “dc=my-domain,dc=com”rootdn “cn=Manager,dc=my-domain,dc=com”把这两行改为suffix “o=tt,c=cn”rootdn “cn=Manager,o=tt,c=cn”suffix 就是看自己如何定义了,后面步骤的 ldif 文件就必须与它定义了。
还要注意到这个配置文件中有一个 rootpw secret,这个 secret 是 cn=Manager 的密码,以后会用到,不过这里是明文密码,你可以用命令: slappasswd -h {MD5} -s mysecret(“mysecret“是自定义的密码,可以随便设置)算出加密的密码{MD5}BsIZ5byDePOoo/g7S35GSQ== 替换配置中的 secret。
3. 启动OpenLDAPCMD 进入到 D:/openldap 下,1)、启动OpenLDAP-slapd服务slapd install OpenLDAP-slapd “OpenLDAP Directory Service” auto net start OpenLDAP-slapdNOTE: the “slapd install” is only needed if you didn’t choose the “create NT service” option during installation.2)、启动OpenLDAP服务器slapd -d 1启动成功可以看到控制台下打印一片信息,如下图openldap 默认是用的 Berkeley DB 数据库存储目录数据的。
4. 在安装目录下建立条目,编辑导入 ldif 文件1) 新建一个 ldif(LDAP Data Interchanged Format) 文件(纯文本格式),例如test.ldif,文件内容如下:dn: o=tt,c=cnobjectClass: dcObjectobjectClass: organizationo: ttdc: comdn: uid=sa, o=tt,c=cnuid: saobjectClass: inetOrgPersonmail: xhy@userPassword: inteclabeledURI: sn: sa-sncn: sa-cn2)打开一个新的cmd 执行命令:ldapadd -x -D “cn=manager,o=tt,c=cn” -w mysecret -f test.ldif参数含义可以运行 ldapadd /?命令来查看,这样我们已经成功导入组织tt和一个用户-系统管理员(uid=sa)导入成功,会如上图所显示。
如果出现“ldap_bind: Invalid credentials (49)”这个错误,请检查配置文件是否配置正确,执行的命令(ldapadd -x -D“cn=manager,o=tt,c=cn” -w mysecret -f test.ldif)是否正确,是不是-w 后面所跟的密码跟我们步骤2-2)所设置的不同等等,仔细检查一下即可。
另外如果想删除我们导入的数据,可以先ctrl+c终止OpenLDAP,然后运行net stop OpenLDAP-slapd停止服务,删除data子文件夹下的内容即可。
5. LdapBrowser 浏览可点击链接/Files/Unmi/LdapBrowser282.rar下载。
解压并双击lbe.jar批处理文件,弹出LDAP Browser窗口中默认会有一个OpenLdap_Localhost的链接,选edit,点击Fetch DNs 按钮会匹配出我们前面设置的DN,password那填写我们步骤2-2)所设置的密码mysecret,SAVE—>>>Connect—>>>我们会看到相关信息~~6. Java 连接openldap?[Copy to clipboard]View Code JAVApackage appDate;import java.io.ObjectInputStream.GetField;import java.sql.Connection;import java.sql.ResultSet;import java.util.ArrayList;import java.util.HashMap;import java.util.Hashtable;import java.util.List;import java.util.Map;import javax.naming.Context;import javax.naming.NamingEnumeration;import javax.naming.NamingException;import javax.naming.directory.Attribute;import javax.naming.directory.Attributes;import javax.naming.directory.DirContext;import javax.naming.directory.InitialDirContext;import javax.naming.directory.SearchControls;import javax.naming.directory.SearchResult;import javax.naming.ldap.InitialLdapContext;import javax.naming.ldap.LdapContext;import javax.xml.crypto.dsig.spec.XPathType.Filter; import pojo.Tuser;public class Test {private DataBaseUtil db = new DataBaseUtil();/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception { // test2();new Test().test1();// new Test().getAllUser();}public void test1() {List<Tuser> list = new ArrayList<Tuser>();Hashtable env = new Hashtable();env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");env.put(Context.PROVIDER_URL, "ldap://localhost/");env.put(Context.SECURITY_AUTHENTICATION, "simple");env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,o=tt,c=cn"); env.put(Context.SECURITY_CREDENTIALS, "mysecret");LdapContext ctx = null;try {ctx = new InitialLdapContext(env, null);//System.out.println("认证成功");} catch (javax.naming.AuthenticationException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}if (ctx != null) {try {SearchControls constraints = new SearchControls();constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); String searchFilter = "(uid=*)";String searchBase = "o=tt,c=cn";int totalResults = 0;String returnedAtts[] = { "sn", "cn" };constraints.setReturningAttributes(returnedAtts);NamingEnumeration answer = ctx.search(searchBase, searchFilter, constraints);while (answer.hasMoreElements()) {SearchResult sr = (SearchResult) answer.next();Attributes attrs = sr.getAttributes();List<String> listStr = new ArrayList<String>();if (attrs != null) {try {for (NamingEnumeration ae = attrs.getAll(); ae.hasMore();) {Attribute attr = (Attribute) ae.next();// System.out.println("AttributeID: " +// attr.getID());// System.out.println(ae.next());for (NamingEnumeration e = attr.getAll(); e.hasMore(); totalResults++) {listStr.add(e.next().toString());// System.out.println(e.next());}}// 查询LDAP所有的信息Tuser t = new Tuser();t.setUserid(listStr.get(0));t.setName(listStr.get(1));list.add(t);} catch (NamingException e) {e.printStackTrace();System.err.println("Problem listing membership: " + e);}}}ctx.close();} catch (NamingException e) {e.printStackTrace();}}List<Tuser> userList = new Test().getAllUser();for (int j = 0; j < list.size(); j++) {isExists(userList, list.get(j), list.get(j).getUserid()); }}// 如果存在该用户则不用同步数据,否则往本地数据库insert数据 public void isExists(List<Tuser> userList, Tuser t, String uid) {boolean folg = false;for (int i = 0; i < userList.size(); i++) {// System.out.println(userList.get(i).getUserid());// System.out.println(uid);if (userList.get(i).getUserid().equals(uid)) {folg = true;continue;}}if (!folg) {// 插入本地数据库String sql = "insert into tusertest values(?,?)";db.update(sql, t.getUserid(), t.getName());}}// 查询现有库的数据public List<Tuser> getAllUser() {String sql = "select userid,name from tusertest";List<Tuser> list = new ArrayList<Tuser>();ResultSet set = null;try {set = db.getResultSet(sql);if (set != null) {while (set.next()) {Tuser t = new Tuser(set.getString("userid"),set.getString("name"));list.add(t);}}} catch (Exception e) {e.printStackTrace();} finally {db.release(set);}return list; }}。