日期:2014-05-16  浏览次数:20763 次

Linux 下安装Ldap笔记 JAVA调用Ldap

Linux 下安装Ldap笔记
参考地址:http://www.yuanma.org/data/2008/0428/article_3023.htm
1、安装环境版本:
openldap-stable-20100719.tgz(openldap-2.4.23) (http://www.openldap.org)
ldapweb-2.0.zip (Ldap web管理工具,需要先安装Apach服务器,后来再看看....还需要安装mysql的环境,烦,不装了)(http://sourceforge.net/projects/ldapweb)
后来在使用的过程中碰到一工具 LdapSearch 3.0? ,可以用于查询 ,后面介绍

LDAP Browser/Editor v2.8.2? LDAP 编辑工具
2、所需要软件:
BDB, 在安装Ldap的过程中,提示说需要BDB的环境
在openldap-2.4.23\README 文件中也有提及,且对版本也有要求,我下载的是 db-4.6.21.tar.tar
?SLAPD:
??????? BDB and HDB backends require Oracle Berkeley DB 4.4, 4.5,
??????? 4.6, 4.7, or 4.8.? It is highly recommended to apply the
??????? patches from Oracle for a given release.

3、安装Ldap
#tar –zxvf openldap-stable-20100719.tgz
#cd openldap-2.4.23
#./configure –prefix=/home/local/ldap??????? //指定安装后的目录
#make depend???????????????????????????????? //如果没有BDB的环境,这里会报错,关于BDB的安装见 【4】
#make
#make install

配置:
slapd.conf文件 端口默认为389
suffix????? "o=hitek,c=cn"
rootdn????? "cn=root,o=hitek,c=cn"??? //这个就是后面登录的用户名
rootpw????? 123????????? //这里可以直接写明文,也可以用/home/local/ldap/sbin/slappasswd? 生成密文
directory?/home/local/ldap/var/openldap-data??? //存储数据的目录
编辑可以用于导入的ldif文件
/home/local/ldap/var/openldap-data/base.ldif
dn:o=hitek,c=cn
o:hitek
objectclass:top
objectclass:organization???? //这个好像是指定的

dn:ou=manager,o=hitek,c=cn??? //类似于建个组
ou:manager
objectclass:top
objectclass:organizationalUnit???? //这个好像是指定的

dn:cn=simbe,ou=manager,o=hitek,c=cn?? //一个用户simbe
objectclass:top
objectclass:organizationalRole???? //这个好像是指定的
cn:simbe
4、BDB的安装
?? #tar zxvf db-4.6.21.tar.gz
?? #mkdir /var/apps/db-4.6.21
?? #/.../db-4.6.21/configure
?? #make;make install


#tar -zxf db-4.6.21.tar.tar
#cd db-4.6.21/build_unix/
#../dist/configure --prefix=/usr/local/BerkeleyDB
#make
#make install?

//下面的可以编辑 ~/.bash_profile 加入环境变量
#export CPPFLAGS="-I/usr/local/BerkeleyDB/include"
#export LDFLAGS="-L/usr/local/BerkeleyDB/lib"?? //注:如不设此环境变量,在编译openldap时,会出现以下错误? configure: error: BDB/HDB: BerkeleyDB not available
#export LD_LIBRARY_PATH="/usr/local/BerkeleyDB/lib"?? //configure: error: Berkeley DB version mismatch

5、ldap ?工具介绍
下载地址:http://www.baidu.com/s?wd=LdapSearch+3.0&rsv_bp=0&n=2&inputT=859

?

LDAP Browser/Editor v2.8.2

?

?

6、常用的一些ldap操作
开启
/home/local/ldap/libexec/slapd
关闭
kill -9
生成密码
/home/local/ldap/sbin/slappasswd
检查 search? ,ldap是否成功
ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
配置
/home/local/ldap/etc/openldap/slapd.conf
添加节点
ldapadd -x -D "cn=Manager,dc=taitien,dc=com,dc=tw" -W -f BDN.ldif
ldapadd -x -D "cn=root,o=hitek,c=cn" -W -f /home/local/ldap/var/openldap-data/base.ldif

7、JAVA调用Ldap

调用使用JNDI,不需要另外的JAR包

import java.util.Enumeration;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;

public class Ldap
{

    private Hashtable env = null;

    private DirContext ctx = null;

    private boolean islogin = false;

    StringBuffer url;

    String host;

    String port;

    String us