zoukankan      html  css  js  c++  java
  • OpenLDAP添加自定义objectClass实现添加自定义属性

    最近使用到OpenLDAP,需要集成进系统。但是OpenLDAP本身的模板中,能用的属性太少了,无法满足正常的业务需求,因此需要对条目的属性进行扩展。

    确定的思路是新增自定义的objectClass,条目的objectClass添加该objectClass之后就可以合法添加自定义属性了(支持PhpLdapAdmin和ApacheDirectoryStudio等可视化工具)

    但是能找到的相关的内容比较少,查到的比较多的也是直接添加schema然后在slapd.conf中引入。在服务器上试了一下(OpenLDAP版本号:2.4.44),没起作用。所以去stackoverflow上取了取经。

    参考来源:https://stackoverflow.com/questions/45511696/creating-a-new-objectclass-and-attribute-in-openldap?r=SearchResults

    1:服务器任意目录创建新的schema文件,例如test.schema。

    文件中的objectclass需要修改name,且必须确保每个项的oid全局唯一(oid的命名都有规律可循,但是我不知道的时候都是瞎编的- - )。

    attributetype ( 1.3.6.1.4.1.42.2.27.4.1.98
            NAME 'userCertNo'
            DESC 'userCertNo'
            EQUALITY caseExactMatch
            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
            SINGLE-VALUE )
    
    attributetype ( 1.3.6.1.4.1.42.2.27.4.1.97
            NAME 'userCertCN'
            DESC 'userCertCN'
            EQUALITY caseExactMatch
            SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
            SINGLE-VALUE )
    
    
    objectclass ( 1.3.6.1.4.1.42.2.27.4.2.88
            NAME 'financeUser'
            DESC 'financeUser'
            SUP top
            AUXILIARY
            MAY ( cn $ userCertNo $ userCertCN ) )

    2:创建编译用的配置文件,例如test.conf。其中只需要包含自己创建的schema即可

    include /etc/openldap/test/test.schema

    3:以上两个文件放在同级目录下(也可以不放一起,编译时指定即可),随后创建目录testdir用于存放编译后的文件。

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

    slaptest -f test.conf -F testdir

    4:进入testdir目录下的cn=config/cn=schema目录下可以看到生成的一个ldif文件。此时重命名该文件,并修改其中的cn和dn。(ldif文件中对空格等元素有严格要求,请不要额外添加空格等其他不必要的元素)

    图中标黄的内容表明的是你要创建的objectClass的类名。

    5:文件名修改完成后在该目录下执行slapadd命令,将该文件添加进OpenLdap库

    slapadd -l ebankUser.ldif -n 0

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

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

    6:以上步骤完成后可以在/etc/openldap/slapd.d/cn=config/cn=schema路径下看到自己新添加的objectclass对应的ldif文件了。

     7:文件赋权并重启ldap服务。

    直接重启服务会报错,需要给/etc/openldap/slapd.d/cn=config/cn=schema赋权或直接修改文件所有者为ldap,否则用户ldap无法读取。

    chmod -R 777 cn=schema

    然后重启服务

    Service slapd restart

     

    8:通过可视化管理界面phpldapadmin或者ApacheDirectoryStudio连接,然后在已有的用户上新增objectClass,选择自定义添加的class即可。随后便可以手动添加自定义的属性值了。

  • 相关阅读:
    Spring spEL
    Spring 使用外部部署文件
    Spring 自动装配
    spring 属性配置细节
    hdu 1054 Strategic Game
    fzu 2037 Maximum Value Problem
    将博客搬至CSDN
    HDU 4714 Tree2Cycle
    HDU 1009 The Shortest Path in Nya Graph
    POJ 1942 Paths on a Grid 组合数的优化
  • 原文地址:https://www.cnblogs.com/ForsakenCoder/p/12149910.html
Copyright © 2011-2022 走看看