Windows下安装使用openldap

来源:互联网 发布:mysql的可视化工具 编辑:程序博客网 时间:2024/05/17 03:02

Windows下安装使用openldap

MSN:zhoujianguo_leo@hotmail.com
<script type="text/javascript"><!-- google_ad_client = "pub-8438768637354676"; google_ad_width = 336; google_ad_height = 280; google_ad_format = "336x280_as"; google_ad_type = "text_image"; //2007-01-17: wiki google_ad_channel = "9876870027"; google_color_border = "FFFFFF"; google_color_bg = "FFFFFF"; google_color_link = "006699"; google_color_text = "000000"; google_color_url = "006699"; //--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script><iframe width="336" scrolling="no" height="280" frameborder="0" allowtransparency="true" hspace="0" vspace="0" marginheight="0" marginwidth="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-8438768637354676&amp;dt=1196903931531&amp;lmt=1185521118&amp;prev_fmts=728x15_0ads_al_s&amp;format=336x280_as&amp;output=html&amp;correlator=1196903931531&amp;channel=9876870027&amp;pv_ch=9876870027%2B&amp;url=http%3A%2F%2Fwww.duduwolf.com%2Fwiki%2F2007%2F490.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=006699&amp;color_url=006699&amp;color_border=FFFFFF&amp;ad_type=text_image&amp;cc=100&amp;ga_vid=217016201.1196152416&amp;ga_sid=1196903932&amp;ga_hid=592083706&amp;ga_fc=true&amp;flash=9&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=3&amp;u_java=true&amp;u_nplug=6&amp;u_nmime=19" name="google_ads_frame"></iframe>

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 

5. LdapBrowser 浏览
可点击链接 http://www.blogjava.net/Files/Unmi/LdapBrowser282.rar 下载,其中已配置好了 OpenLdap_Localhost

   1) 设置如下图所示:
LdapBrowserSettings

指 定了 Host 为 localhost 之后,可以点击 Fetch DNs 按钮显示出 o=tcl,c=cn 来,如果要能在 LdapBrowser 中对数据能修改就不能用 Anonymous bind, 必须填上 User DN: cn=manager,Passwer: secret。

   2) 看到的效果是:
LdapBrowser

6. Java 连接 openldap

 
  1. import  java.util.Hashtable;   
  2. import  javax.naming.Context;   
  3. import  javax.naming.NamingException;   
  4. import  javax.naming.directory.DirContext;   
  5. import  javax.naming.directory.InitialDirContext;   
  6.     
  7. public   class  LDAPTest {   
  8.    public   static   void  main(String[] args) {   
  9.     LDAPTest LDAPTest1 =  new  LDAPTest();   
  10.     String root =  "o=tcl,c=cn" //root   
  11.     Hashtable env =  new  Hashtable();   
  12.     env.put(Context.INITIAL_CONTEXT_FACTORY,  "com.sun.jndi.ldap.LdapCtxFactory" );   
  13.     env.put(Context.PROVIDER_URL,  "ldap://localhost/"  + root);       
  14.     env.put(Context.SECURITY_AUTHENTICATION,  "simple" );   
  15.     env.put(Context.SECURITY_PRINCIPAL,  "cn=Manager,o=tcl,c=cn" );   
  16.     env.put(Context.SECURITY_CREDENTIALS,  "secret" );   
  17.     DirContext ctx =  null ;   
  18.      try  {   
  19.       ctx =  new  InitialDirContext(env);   
  20.       System.out.println( "认证成功" );   
  21.     }   
  22.      catch  (javax.naming.AuthenticationException e) {   
  23.       e.printStackTrace();   
  24.       System.out.println( "认证失败" );   
  25.     }   
  26.      catch  (Exception e) {   
  27.       System.out.println( "认证出错:" );   
  28.       e.printStackTrace();   
  29.     }   
  30.     
  31.      if  (ctx !=  null ) {   
  32.        try  {   
  33.         ctx.close();   
  34.       }   
  35.        catch  (NamingException e) {   
  36.          //ignore   
  37.       }   
  38.     }   
  39.   }   
  40. }  
代码中还没有实现用户的查找,读取、修改条目属性的操作

参考资料:1. 如何设置一个基本的OpenLDAP Server
           2. windows下openldap的安装与java操作测试
           3. LDAP 入门知识
           4. OpenLDAP学习笔记

下一步计划是:
    1. 完成 Apache 与 openldap 的集成
    2. 完成 Tomcat 与 openldap 的集成 
    3. 使用 spring-ldap 的 LdapTemplate 操作 openldap

 
原创粉丝点击