java LDAP 学习
基础概念
目录系统是关于某些类别的对象(例如人)的信息列表。目录可以用于查找特定对象的信息,也可以反方向查找满足特定需求的对象。 企业中的员工通讯录就是一个目录系统。目录访问协议(directory access protocol)就是用来访问目录中数据的标准化方式。最广泛使用的是 轻量级目录访问协议(lightweight directory access protocol,LDAP),openldap是LDAP的一个开源实现。
Java对象在LDAP目录中也有多种存储形式:
- Java序列化
- JNDI Reference
- Marshalled对象
- Remote Location
LDAP数据模型
在LDAP目录中存储的是类似于面向对象语言中对象的条目(entry)。每个条目必须有一个能标示自己的可区别名称 DN(distinguished name),DN 又由一组相对可区别名称 RDN(relative DN)组成。
例如:
cn=user01,ou=People,dc=massclouds,dc=com
这个DN唯一标示的条目代表了目录中的一个人。 其中各个RDN的含义是:
cn: common name(s) for which the entity is known by
ou: organizational unit this object belongs to
dc: domain component
系。 而条目中的属性就是定义在这些类中的。关于objectclass 、属性的规则是定义在schema中的。
下面是定义一个条目的LDIF(LDAP Data Interchange Format, LDAP数据交换格式):
dn: cn=user01,ou=People,dc=massclouds,dc=com
cn: user01
gidnumber: 500
homedirectory: /home/user01
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: top
sn: user01
title:
uid: user01
uidnumber: 836031732
userpassword: {SSHA}25vgYD/sRglAUSKLKfIU7hya9Kp/cFUS
上面的例子中,表示user01的条目属于三个objectclass: inetOrgPerson 、posixAccount和top。 objectclass
分为 结构型、辅助型和抽象型,每个条目必须要属于一个结构型的objectclass。
在objectclass中定义了必须的属性和可选的属性,条目如果属于某个objectclass,那么就必须要有这个objectclass所有的必须属性。
条目按照它们的DN组织成一颗目录信息数(Directory Intermation Tree, DIT),树的叶子节点通常表示特定的对象,而内部节点表示组织、部门等上层信息。一个节点必然会包含它父节点的所有RDN。
LDIF文件书写规则
LDIF 是存储LDAP配置信息及目录内容的标准文本文件格式,通常用来交换数据并在OpenLDAP服务器之间互相交换数据,并且可以通过LDIF实现数据文件的导入、导出以及数据文件的添加、修改、重命名等操作,这些信息需要按照LDAP中schema的规范进行操作,并会接受schema的检查,如果不符合OpenLDAP schema规范要求,则会提示相关语法错误。
- LDIF文件每行的结尾不允许有空格或者制表符;
- LDIF文件允许相关属性可以重复赋值并使用;
- LDIF文件以.ldif结尾命名;
- LDIF文件中以#号开头的一行为注释,可以作为解释使用;
- LDIF文件所有的赋值方式为:属性:(空格)属性值;
- LDIF文件通过空行来定义一个条目,空格前为一个条目,空格后为另一个条目的开始。
搭建OpenLDAP环境
执行下面命令安装OpenLDAP的相关(环境 centos7)
yum -y install openldap openldap-servers openldap-clients openldap-devel compat-openldap
安装完后,可以看到自动创建了ldap用户:
通过下面命令可以查看安装了哪些包
rpm -qa |grep openldap
拷贝数据库配置配置文件,并启动服务
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
systemctl start slapd
systemctl status slapd
systemctl enable slapd #设置开机自启动
配置 LDAP
初始化配置
直接照着教程装就行
参考:https://zhuanlan.zhihu.com/p/32732045
参考:https://blog.csdn.net/Copy09/article/details/126892200
测试配置文件
该步骤是为了检查配置文件是否存在错误:
slaptest -u
config file testing succeeded 则说明配置文件无误;
checksum error on 异常是因为手动修改了文件,ldap检查和之前不一致;
配置好后登录 web 管理页面,效果如下:
标签:java,objectclass,条目,学习,openldap,LDAP,LDIF,user01 From: https://www.cnblogs.com/gaorenyusi/p/18399305