您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页OpenLDAP添加自定义属性

OpenLDAP添加自定义属性

来源:飒榕旅游知识分享网


知识准备


在LDAP的schema中,有四个重要的元素:

1. Objectclass

2. Attribute

         attribute就是一个上面objectclass中可能包含的属性,对其的定义包括名称,数据类型,单值还是多值以及匹配规则等。后面用具体的例子来说明。

3. Syntax

        syntax是LDAP中的“语法”,其实就是LDAP中会用到的数据类型和数据约束,这个语法是遵从X.500中数据约束的定义的。其定义需要有一个ID(遵从X.500)以及说明(DESP)

4. Matching Rules

        是用来指定某属性的匹配规则,实际上就是定义一个特殊的Syntax的别名,让LDAP服务器可以识别,并对定义的属性进行匹配

很多常用schema的定义都在了RFC2252中,LDAP服务器都应该支持这些基本的schema。下面进行定义自己的schema。

前言

        由于OpenLDAP本身包含的属性有限,不能满足实际生产需求,因此考虑自定义部分属性来满足业务上的需要,此文也在参考其他博客的基础上进行总结编写,以此记录下实际操作过程,参考博文在文章最后有标出

操作步骤

本人使用的是docker安装的OpenLDAP       

docker run -p 3:3 ^
--name myopenldap ^
--network bridge ^
--hostname openldap-host ^
--env LDAP_ORGANISATION="XXX" ^
--env LDAP_DOMAIN="XXX.com" ^
--env LDAP_ADMIN_PASSWORD="ldap123" ^
--detach osixia/openldap


配置LDAP组织者:--env LDAP_ORGANISATION="mylitboy"
配置LDAP域:--env LDAP_DOMAIN="mylitboy.com"
配置LDAP密码:--env LDAP_ADMIN_PASSWORD="ldap123"
默认登录用户名:admin

OpenLDAP版本:2.4.57

查看OpenLDAP版本命令:
slapd -V

1. 首先使用docker进入容器内部

docker exec -it 你的容器id bash

2. 在服务器任意位置创建目录,例如我在根目录下创建myldap

3. 然后进入到myldap目录下创建schema文件,例如名字为test.schema 

注:docker下默认没有vi和vim编辑器,记得安装,不会的百度一下

vim test.schema

在test.schema中输入内容

attributetype (
    3.2.2.1.1
    NAME 'myId'
    DESC '我测试的id'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SINGLE-VALUE )
attributetype (
    3.2.2.1.2
    NAME 'myName'
    DESC '我测试的名称'
	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
    EQUALITY caseIgnoreMatch
    SUBSTR caseIgnoreSubstringsMatch
    SINGLE-VALUE )
objectClass (
    3.2.2.1.3
    NAME 'myObjectClass'
	DESC '我测试的objectClass'
    SUP inetOrgPerson STRUCTURAL
    MAY ( myId $ myName ))

 3.1 内容说明

        以上创建了myId和myName两个属性,和myObjectClass一个类别,myObjectClass类别下包含myId和myName两个属性

        第一个参数

                第一个参数是oid,oid必须且唯一,不重复就好

        NAME:

                你需要定义的属性名称

        DESC:

                属性的描述

        SYNTAX:

                表示的数据类型,可参考如下表格

NameOIDDescription
boolean1.3.6.1.4.1.1466.115.121.1.7boolean value
directoryString1.3.6.1.4.1.1466.115.121.1.15Unicode (UTF-8) string
distinguishedName1.3.6.1.4.1.1466.115.121.1.12LDAP DN
integer1.3.6.1.4.1.1466.115.121.1.27integer
numericString1.3.6.1.4.1.1466.115.121.1.36numeric string
OID1.3.6.1.4.1.1466.115.121.1.38object identifier
octetString1.3.6.1.4.1.1466.115.121.1.40arbitrary octets

         EQUALITY:

                约束规则,参考如下表格

NameTypeDescription
booleanMatchequalityboolean
caseIgnoreMatchequalitycase insensitive, space insensitive
caseIgnoreOrderingMatchorderingcase insensitive, space insensitive
caseIgnoreSubstringsMatchsubstringscase insensitive, space insensitive
caseExactMatchequalitycase sensitive, space insensitive
caseExactOrderingMatchorderingcase sensitive, space insensitive
caseExactSubstringsMatchsubstringscase sensitive, space insensitive
distinguishedNameMatchequalitydistinguished name
integerMatchequalityinteger
integerOrderingMatchorderinginteger
numericStringMatchequalitynumerical
numericStringOrderingMatchorderingnumerical
numericStringSubstringsMatchsubstringsnumerical
octetStringMatchequalityoctet string
octetStringOrderingMatchorderingoctet string
octetStringSubstringsMatchorderingoctet st ring
objectIdentiferMatchequalityobject identifier

SUBSTR caseIgnoreSubstringsMatch

                表示支持模糊查询        

SINGLE-VALUE:

        SUP:

                继承的父类别,父类别可以在已有的ObjectClass中查找,使用Apache Directory Studio查看如下,可以在其中搜索

                SUP top:后续只会生成一个ldif文件

 

        MAY:

                必须属性(MUST),可选属性(MAY)

4.进入myldap目录下创建conf文件,例如名字为test.conf

vim test.conf

在test.conf中输入如下内容

参考自己OpenLDAP安装的路径,这个是inetorgperson类别需要的schema,如果SUP是top,则下面三行不需要引入
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
即引入上步骤创建的schema文件
include /myldap/test.schema

 5. 执行slaptest命令编译自定义的schema,生成ldif等文件

slaptest -f /myldap/test.conf -F /myldap

6. 修改生成文件

        多个ldif文件中的cn={3}test.ldif就是我们需要的文件,需要将它重命名,并修改其中的cn和dn(ldif文件中对空格等元素有严格要求,请不要额外添加空格等其他不必要的元素)

        修改前文件内容       

        修改后文件内容

                重命名

mv cn\=\{3\}test.ldif myObjectClass.ldif

                 修改文件

7. 执行 slapadd命令,将该文件添加进OpenLdap库

slapadd -l /myldap/cn=config/cn=schema/myObjectClass.ldif -n 0

如图正常不报错即成功了

        要注意是否有提示属性重复或者oid重复,如果提示报错需要修改schema后再次编译。

较为常见的错误是提示你属性重复或者oid重复,此时最好重新修改schema文件然后再次编译。

8. 查看新添加的objectclass为营的ldif文件

        完成以上步骤就可以在路径/etc/ldap/slapd.d/cn=config/cn=schema(根据自己的安装路径确定)看到文件了

9. 文件复权并重启ldap服务

         直接重启服务会报错,需要给/etc/openldap/slapd.d/cn=config/cn=schema赋权

chmod -R 777 /etc/ldap/slapd.d/cn=config/cn=schema

        重启服务

docker stop 容器id
docker restart 容器id

10. 通过工具Apache Directory Studio查看是否导入自定义属性

 

 


 

11. 参考博客

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务