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即可。随后便可以手动添加自定义的属性值了。

  • 相关阅读:
    马的遍历
    01迷宫
    TF-IDF算法扫盲2
    关键字提取算法之TF-IDF扫盲
    基于高维聚类技术的中文关键词提取算法
    文本关键词提取算法
    函数查询(Function Query)
    企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1]
    企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[3]
    企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[2]--DIH
  • 原文地址:https://www.cnblogs.com/ForsakenCoder/p/12149910.html
Copyright © 2011-2022 走看看