Ldap简单介绍

        关于LDAP的概念随便网上有很多,我不想重复,这里只是说一下我自己的 理解。都说它是“轻量级目录协议”,太专业,我不懂,我只把它想象成“简单”的 目录协议。

        几个很重要的概念,以后会用到:
        ---------------------------------------------
        dn :一条记录的位置
        dc :一条记录所属区域
        ou :一条记录所属组织
        cn/uid:一条记录的名字/ID
        ---------------------------------------------

        实际上更多时候我只把它看成数据库。我把它和我非常熟悉的MYSQL数据
        库做比较,通常会得到更好的理解:

        MYSQL用“表”储存数据,LDAP用“树” MYSQL指定一条记录要3个条件:DB、TABLE、ROW。
        LDAP却更自由,为什么呢?因为LDAP数据是“树”状的,而且这棵树是可以
        无限延伸的,假设你要树上的一个苹果(一条记录),你怎么告诉园丁它
        的位置呢?当然首先要说明是哪一棵树(dc,相当于MYSQL的DB),然后
        是从树根到那个苹果所经过的所有“分叉”(ou,呵呵MYSQL里面好象没有
        这DD),最后就是这个苹果的名字(uid,记得我们设计MYSQL或其它数据
        库表时,通常为了方便管理而加上一个‘id’字段吗?)。 好了!这时我
        们可以清晰的指明这个苹果的位置了,就是那棵“歪脖树”的东边那个分叉
        上的靠西边那个分叉的再靠北边的分叉上的半红半绿的……,晕了!你直接
        爬上去吧!我还是说说LDAP里要怎么定义一个字段的位置吧,树
        (dc=waibo,dc=com),分叉(ou=bei,ou=xi,ou=dong),苹果
        (cn=honglv),好了!位置出来了:
        dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=waibo,dc=com

        一个有名的画家说过:“世上没有相同的2个鸡蛋”。当然也没有相同的2个
        苹果……,同样,在LDAP里也不可能存在2个相同的dn。


        LDAP数据填充原理:
        一棵树的生长,要循序渐进,如果还没有长出某个分叉,就不可能在那个
        分叉里长出苹果(问:FT!苹果是长在分叉上的吗?答:为了便于理解,
        你就当它是吧),同样,LDAP数据库也要一步步的充实,举一个学校数据
        库的例子,我们将要把一个庞大的学生档案放到LDAP里,大致需要这么做:
        ---------------------------------------------
        1、建立“树根”,这是通过修改“slapd.conf”来实现的,由于现在的目的
        是理解,所以具体步骤就不说了,反正就是在这一步建立了一个
        “dc=ourschool,dc=org”这样一个“树根”。 注意:我把它理解成“目录”,
        或者“容器”,甚至它本身也是文件(苹果)的特殊形式,熟悉LINUX文件
        系统的朋友会更容易理解。
        2、建立18个系,分别是“dn:ou=computer,dc=ourschool,dc=org”、
        “dn:ou=film,dc=ourschool,dc=org”……
        3、当然是在每个系里面建立专业,比如
        “dn:ou=linux,ou=computer,dc=ourschool,dc=org”……
        4、(开始长苹果吧!)加学生喽——
        “dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”……
        5、已经完成了吗?对了!学生的详细信息还没有呐!不过先这样吧,反
        正记录是可以编辑的。
        ---------------------------------------------


        LDAP记录的详细信息
        dn:cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org
        objectClass:organizationalPerson
        cn:stan
        cn:小刀
        sn:小刀
        description:a good boy
        (以上是一条记录的信息,如果把他保存成LDIF文件,可以导入到LDAP数
        据库中)
        上面不是说没有学生详细信息吗?怕你着急,就马上写出来了,只是还没
        有导入到LDAP里,那是以后的事。这里我先就你可能会产生的疑问做回答。
        ---------------------------------------------
        Q1:“cn”不是在“dn”里定义了吗,怎么又在后面重新定义了? 答:你要
        把“cn=stan,ou=linux,ou=computer,dc=ourschool,dc=org”看成是一个整
        体,它只是属性dn的值。
        Q2:怎么后面有2个“cn”,我以哪个为准? 答:区别于普通数据库,LDAP
        每个属性一般可以具有多个值,这样不好吗?你在学校数据库里找我的时
        候,只要记得我的一个cn就可以了,用“cn=stan”或“cn=小刀”都可以找到我!
        Q3:就这些属性了吗?我都不知道你是男是女。 答:先声明,偶是男
        地。 LDAP对记录的属性做了严格的限制(这一点我不太喜欢),也就是
        说,你可以用哪些属性,哪些属性不能为空,哪些属性最多只能有一个值
        等,他们都给你规定好了。 幸好你有选择的权利,比如这次我们是储存
        学生信息,那么我们就定义一个
        “objectClass:organizationalPerson”,这样“organizationalPerson”
        这个类所规定的所有属性我们都可以用了,而且确实很适合我们。 虽然
        这个类中没有“sex”这个属性,不过你完全可以用一个“空闲”的属性来顶
        替。 如果我们能自己建立“类”就更好了,但目前我还没有时间去研究这
        个东西,我也期望高手指点啊 :)
        ---------------------------------------------


        好了!看到我贴的图了吗?那是我偷别人的,差不多能用我就不自己画了 :)

        ##############################################################

        关于安装配置LDAP,使之储存系统用户,这里有一个非常好的网址,如果你的英文不是很差,都应该做的来,我偷个懒,就先不写这方面的东西喽:
        http://www.mandrakesecure.net/en/docs/*ldap*-auth.php<http://www.mandrakesecure.net/en/docs/ldap-auth.php>
        上面的方法我已经试过,是可行的,如果兄弟们配置的时候出现问题我们可以讨论讨论。

        关于LDAP+POSTFIX,POSTFIX里的“LDAP_README”中介绍的很详细,我再说
        就是重复了。
        ##############################################################
        其它相关资源:
        yala (很实用的数据库操作工具,简单的说,他就是MYSQL的phpmyadmin,自己找下载地址吧~)
        http://www.open*ldap*.org/ <http://www.openldap.org/> (说实话,我一直没用上它,不过它是官方网站,不提也不好)
        http://*ldap*.akbkhome.com/ <http://ldap.akbkhome.com/> (什么 ‘类’下面有什么‘属性’,在这里找)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,目前最新版本的JDK是JDK 17,而不是JDK 21。关于LDAP(轻量级目录访问协议)连接的介绍如下: LDAP是一种用于访问和维护分布式目录服务的协议。它提供了一种标准的方式来访问和操作目录中的数据。在Java中,可以使用JNDI(Java命名和目录接口)来连接和操作LDAP服务器。 要连接LDAP服务器,首先需要导入JNDI相关的类库。然后,可以通过创建一个InitialDirContext对象来建立与LDAP服务器的连接。在创建InitialDirContext对象时,需要提供LDAP服务器的URL、用户名和密码等连接参数。 以下是一个简单的示例代码,演示了如何使用JNDI连接LDAP服务器: ```java import javax.naming.*; import javax.naming.directory.*; public class LDAPConnectionExample { public static void main(String[] args) { String ldapUrl = "ldap://ldap.example.com:389"; String username = "cn=admin,dc=example,dc=com"; String password = "adminpassword"; try { // 创建连接 Hashtable<String, String> env = new Hashtable<>(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.PROVIDER_URL, ldapUrl); env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, username); env.put(Context.SECURITY_CREDENTIALS, password); DirContext ctx = new InitialDirContext(env); // 连接成功,可以进行操作 // ... // 关闭连接 ctx.close(); } catch (NamingException e) { e.printStackTrace(); } } } ``` 在上述示例中,需要替换ldapUrl、username和password为实际的LDAP服务器信息和凭据。连接成功后,可以在注释部分进行LDAP操作,如搜索、添加、修改和删除条目等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值