`
zhaoshijie
  • 浏览: 2242212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ldap安装配置

    博客分类:
  • LDAP
阅读更多
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   
      }   
    }   
  }   
}  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics