linux下:
安装openldap
先装好openldap centos 有个 yum 的包,方便我们使用,不需要自己去找个rpm 来安装
装个主程序和客户端、服务端就行了!
# yum install openldap openldap-servers openldap-clients
安装好之后做个简单的修改就可以运行了!
修改slapd.conf文件
# vi /etc/openldap/slapd.conf
找到这一行include
/etc/openldap/schema/XXX.schema
可以把在/etc/openldap/schema 目录下有用的schema 文件加到这里!
本次实验按他默认设置,没作添加!
suffix
"dc=my-domain,dc=com"
rootdn
"cn=Manager,dc=my-domain,dc=com"
这里要填定你的域名,客户端连接的时候要用到的!如你的域名rookie.com “dc=rookie,dc=com”
##这和你的hostname 无关
# rootpw
secret
这一行是明文的密码设置,可以用MD5加密,方法可以问问google !默认是被注释的,所以要把#号去掉’secret ’ 就是你的密码
这三行我改成了这样,大家可以参考一下
suffix
"dc=rookie,dc=com"
rootdn
"cn=root,dc=rookie,dc=com"
rootpw
123456
保存退出后可以开启openldap 服务了
# service ldap start
Checking configuration files for slapd:
config file testing succeeded
[
OK
]
Starting slapd:
[
OK
]
当你再重启的时候会发现有点问题
# service ldap restart
Stopping slapd:
[
OK
]
Checking configuration files for slapd:
bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2)
Expect poor performance for suffix dc=my-domain,dc=com.
config file testing succeeded
[
OK
]
Starting slapd:
[
OK
]
虽然启动成功!当是警告在/var/lib/ldap 的目录下找不到DB_CONFIG的文件
不用担心,在/etc/openldap/ 下有个DB_CONFIG.example 的文件,拿来用用就行了!把他复制到/var/lib/ldap 下,改名为 DB_CONFIG 就行了!
# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# service ldap restart
OK!没报错了!!openldap 已经装完了!
客户端连接openldap
以后的管理都用终端,会很累人的!找个客户端连上去就方便多了!
介绍两款客户端软件
1.
LDAP Browser\Editor 2.8.1 免费小巧
2.
LDAP Administrator 2008.1 收费,功能比Browser 强
使用客户端前先在ldap服务中创建初始数据,否则用客户端连接的时候会提示连接失败!
# vi /var/lib/ldap/test.ldif
路径和文件文可以自定,记住就行了
dn: dc=<MY-DOMAIN>,dc=<COM>
objectclass: dcObject
objectclass: organization
o: <MY ORGANIZATION>
dc: <MY-DOMAIN>
dn: cn=Manager,dc=<MY-DOMAIN>,dc=<COM>
objectclass: organizationalRole
cn: Manager
把这些加上去,一定要注意,该有空格的有空格,不该有的不要有!
我自己改的给大家对比一下!
dn: dc=rookie,dc=com
objectclass: dcObject
objectclass: organization
o: rookie
dc: rookie
dn: cn=root,dc=rookie,dc=com
objectclass: organizationalRole
cn: root
改好后保存退出
运行ldapadd 把条目添加到ldap 中
# ldapadd -x -D "cn=root,dc=rookie,dc=com" –W -f /var/lib/ldap/test.ldif
输入密码后就大功告成!
这次我使用LDAP Browser
下载地址http://www.mcs.anl.gov/~gawor/ldap/
下载后直接解压运行Browser\Editor(Browser\Editor运行需要Java 1.2.2 或更高版本,如果要运行失败提示安装Java 就安装一个吧)
==================================================================
windows 下:
openldap 比起其他商业目录服务器(比如 IBM Directory Server),特别的轻巧,十分适合于本地开发测试用,在产品环境中的表现也很优秀。
openldap 软件在它的官方网站 http://www.openldap.org, 不过下载过来是源代码,并没有包含 win32 下的 Makefile 文件,只提供了在 Unix/Linux 下编译用的 Makefile。所以相应的在网上介绍在 windows 下安装使用 openldap 的资料比较少,而在 Unix/Linux 下应用文档却很丰富。
本文实践了在 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=tcl,c=cn"
rootdn "cn=Manager,o=tcl,c=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=tcl,c=cn
objectClass: dcObject
objectClass: organization
o: tcl
dc: com
dn: uid=Unmi, o=tcl,c=cn
uid: Unmi
objectClass: inetOrgPerson
mail: fantasia@sina.com
userPassword:: MTIzNDU2
labeledURI: http://unmi.blogcn.com
sn: Qiu
cn: 隔叶黄莺
2) 执行命令:ldapadd -x -D "cn=manager,o=tcl,c=cn" -w secret -f test.ldif
导入组织信息和一个用户 uid=Unmi
============================================================
java简单验证:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class Client {
public static void main(String[] args) {
Client LDAPTest1 = new Client();
String root = "o=tcl,c=cn" ; //root
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
env.put(Context.PROVIDER_URL, "ldap://192.168.1.105/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple" );
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,o=tcl,c=cn");
env.put(Context.SECURITY_CREDENTIALS, "secret" );
DirContext ctx = null ;
try {
ctx = new InitialDirContext(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
}
}
}
}
安装openldap
先装好openldap centos 有个 yum 的包,方便我们使用,不需要自己去找个rpm 来安装
装个主程序和客户端、服务端就行了!
# yum install openldap openldap-servers openldap-clients
安装好之后做个简单的修改就可以运行了!
修改slapd.conf文件
# vi /etc/openldap/slapd.conf
找到这一行include
/etc/openldap/schema/XXX.schema
可以把在/etc/openldap/schema 目录下有用的schema 文件加到这里!
本次实验按他默认设置,没作添加!
suffix
"dc=my-domain,dc=com"
rootdn
"cn=Manager,dc=my-domain,dc=com"
这里要填定你的域名,客户端连接的时候要用到的!如你的域名rookie.com “dc=rookie,dc=com”
##这和你的hostname 无关
# rootpw
secret
这一行是明文的密码设置,可以用MD5加密,方法可以问问google !默认是被注释的,所以要把#号去掉’secret ’ 就是你的密码
这三行我改成了这样,大家可以参考一下
suffix
"dc=rookie,dc=com"
rootdn
"cn=root,dc=rookie,dc=com"
rootpw
123456
保存退出后可以开启openldap 服务了
# service ldap start
Checking configuration files for slapd:
config file testing succeeded
[
OK
]
Starting slapd:
[
OK
]
当你再重启的时候会发现有点问题
# service ldap restart
Stopping slapd:
[
OK
]
Checking configuration files for slapd:
bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2)
Expect poor performance for suffix dc=my-domain,dc=com.
config file testing succeeded
[
OK
]
Starting slapd:
[
OK
]
虽然启动成功!当是警告在/var/lib/ldap 的目录下找不到DB_CONFIG的文件
不用担心,在/etc/openldap/ 下有个DB_CONFIG.example 的文件,拿来用用就行了!把他复制到/var/lib/ldap 下,改名为 DB_CONFIG 就行了!
# cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# service ldap restart
OK!没报错了!!openldap 已经装完了!
客户端连接openldap
以后的管理都用终端,会很累人的!找个客户端连上去就方便多了!
介绍两款客户端软件
1.
LDAP Browser\Editor 2.8.1 免费小巧
2.
LDAP Administrator 2008.1 收费,功能比Browser 强
使用客户端前先在ldap服务中创建初始数据,否则用客户端连接的时候会提示连接失败!
# vi /var/lib/ldap/test.ldif
路径和文件文可以自定,记住就行了
dn: dc=<MY-DOMAIN>,dc=<COM>
objectclass: dcObject
objectclass: organization
o: <MY ORGANIZATION>
dc: <MY-DOMAIN>
dn: cn=Manager,dc=<MY-DOMAIN>,dc=<COM>
objectclass: organizationalRole
cn: Manager
把这些加上去,一定要注意,该有空格的有空格,不该有的不要有!
我自己改的给大家对比一下!
dn: dc=rookie,dc=com
objectclass: dcObject
objectclass: organization
o: rookie
dc: rookie
dn: cn=root,dc=rookie,dc=com
objectclass: organizationalRole
cn: root
改好后保存退出
运行ldapadd 把条目添加到ldap 中
# ldapadd -x -D "cn=root,dc=rookie,dc=com" –W -f /var/lib/ldap/test.ldif
输入密码后就大功告成!
这次我使用LDAP Browser
下载地址http://www.mcs.anl.gov/~gawor/ldap/
下载后直接解压运行Browser\Editor(Browser\Editor运行需要Java 1.2.2 或更高版本,如果要运行失败提示安装Java 就安装一个吧)
==================================================================
windows 下:
openldap 比起其他商业目录服务器(比如 IBM Directory Server),特别的轻巧,十分适合于本地开发测试用,在产品环境中的表现也很优秀。
openldap 软件在它的官方网站 http://www.openldap.org, 不过下载过来是源代码,并没有包含 win32 下的 Makefile 文件,只提供了在 Unix/Linux 下编译用的 Makefile。所以相应的在网上介绍在 windows 下安装使用 openldap 的资料比较少,而在 Unix/Linux 下应用文档却很丰富。
本文实践了在 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=tcl,c=cn"
rootdn "cn=Manager,o=tcl,c=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=tcl,c=cn
objectClass: dcObject
objectClass: organization
o: tcl
dc: com
dn: uid=Unmi, o=tcl,c=cn
uid: Unmi
objectClass: inetOrgPerson
mail: fantasia@sina.com
userPassword:: MTIzNDU2
labeledURI: http://unmi.blogcn.com
sn: Qiu
cn: 隔叶黄莺
2) 执行命令:ldapadd -x -D "cn=manager,o=tcl,c=cn" -w secret -f test.ldif
导入组织信息和一个用户 uid=Unmi
============================================================
java简单验证:
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class Client {
public static void main(String[] args) {
Client LDAPTest1 = new Client();
String root = "o=tcl,c=cn" ; //root
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
env.put(Context.PROVIDER_URL, "ldap://192.168.1.105/" + root);
env.put(Context.SECURITY_AUTHENTICATION, "simple" );
env.put(Context.SECURITY_PRINCIPAL, "cn=Manager,o=tcl,c=cn");
env.put(Context.SECURITY_CREDENTIALS, "secret" );
DirContext ctx = null ;
try {
ctx = new InitialDirContext(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
}
}
}
}