LDAP自定义属性字段扩展实践

      本文与大家分享和交流LDAP自定义属性字段的扩展,希望能对大家有所帮助。

一、LDAP(OpenLdap)服务安装和启动
      LDAP全称Lightweight Directory Access Protocol,即轻量目录访问协议。LDAP采用树状的层次结构存储数据,这一点功能上可以理解为“数据库”。关于LDAP(OpenLdap)的安装和环境的搭建,CentOS和ubuntu上又有差异,不同安装下的启动方式略有不同。LDAP环境搭建的网络资源丰富,读者可以查阅相关资料,搭建环境过程较为简单,不再赘述。
      笔者搭建的环境基于Ubuntu 16.04.3,启动服务/etc/init.d/slapd restart,启动后可通过查看进程的方式观测效果:

       

二、设置管理员密码
      在Ldap服务启动正常的情况下,键入slappasswd -s 123456(为管理员账号密码)命令,会产生加密后的密码:

      

     将该密码在slapd.d/cn=config目录下找到以bdb.ldif结尾的文件,将刚刚加密的密码修改并保存:

     

三、安装Apache Directory Studio
     在官网下载windows版本下的zip包,解压执行可执行文件即可。配置Ldap所安装的主机ip和端口号(一般为389):

          

         进一步输入认证信息,比如笔者这里为cn=admin,dc=example,dc=com,密码为123456。

        

         需说明的是,这一步验证的方式为simple,即账号和密码验证。验证成功后即可看到Ldap的目录树和相关数据。

四、扩展自定义schema
       Ldap自带一些objectClass,这些objectClass包含常用的属性。而实际项目中这些属性往往不能满足业务需求,这就需要研发人员扩展自定义的属性。本文的重点就是讲述如何扩展自定义属性字段,其中分为在父类中的属性扩展和自定义objectClass中的属性扩展两种方式。
    (1) 扩展父类中带有的属性,如mail。
       我们可以通过Apache Directory Studio可以轻易的发现,父类的objectClass在没有扩展的情况下是不被允许使用的!比如父类中包含的dSAQuality:  

我们用如下操作步骤扩展:①添加组织 touch add_entry.ldif文件,并键入如下内容:

dn: ou=Marketing, dc=example,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: Marketing

dn: cn=BoA,ou=Marketing,dc=example,dc=com
changetype: add
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: BoA
sn: aaa
ou: Marketing
description: beautiful
uid: test1

②执行ldap的更新操作:

ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f add_entry.ldif

③修改组织扩展来自父类的属性,这里我们同样touch modify_entry.ldif并键入如下内容:

dn: cn=Pete Minsky,ou=Marketing,dc=example,dc=com
changetype: modify
add: mail
mail: test@example.com

④执行ldap的更新操作:ldapmodify -xWD 'cn=admin,dc=example,dc=com' -f modify_entry.ldif
⑤至此,我们可以在图形浏览工具Apache Directory Studio界面看到,已有产生的ou=Marketing的组织并且cn=BoA的数据中包含email属性字段:
     
我们在添加属性的时候可以看到这个属性字段是在父类的objectClass中的:

        

由此,扩展父类中带有的属性成功!
    (2)在自定义objectClass中扩展属性iccr 
       相信细心的读者会发现方式①的操作步骤中,我们有用到如下三行配置内容:

objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson

        那么,我们是不是扩展一个objectclass:myLdap这样的父类就行了?没错,就是这样简单!
五、添加自定义schema
    我们在/etc/ldap/schema目录(根据个人情况,可能路径有所不同)下,添加myTest.schema,并加上属性和类名的信息:
        
然后在当前目录下新建目录tmp,进入目录并新建文件myConf.conf,引入我们添加的myTest.schema和依赖的core.schema:
       
执行命令slapcat -f ./myConf.conf -F ./ -n0对schema进行编译,把这一步生成的ldif文件替换掉/etc/ldap/slapd.d/cn=config/cn=schema下的对应文件,给刚刚替换的ldif文件赋权并重启ldap服务。在Apache Directory Studio界面我们可以看到扩展的iccr属性:

      

表示操作成功!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
如果你希望在 PostgreSQL 用户表的密码字段上进行特殊的设置,可以考虑以下几种方式: 1. 使用加密算法:可以使用 PostgreSQL 提供的密码加密函数,如 `crypt()` 或 `pgcrypto` 扩展。这些函数可以将密码进行加密,并存储加密后的密码值。这样即使数据库被未经授权的人访问,也无法直接获取到用户的原始密码。可以使用以下示例代码将密码字段加密并插入到用户表中: ```sql -- 创建用户表 CREATE TABLE users ( id SERIAL PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(100) NOT NULL ); -- 使用 crypt() 函数将密码进行加密并插入到用户表中 INSERT INTO users (username, password) VALUES ('john', crypt('password123', gen_salt('bf'))); ``` 在上述代码中,`crypt()` 函数将密码进行加密,使用 `gen_salt('bf')` 生成一个随机的 salt 值。 2. 密码策略和强度要求:可以在应用层面或数据库层面实施密码策略和强度要求。这可以包括要求密码长度、包含特殊字符、大写字母、小写字母和数字等。你可以编写自定义的验证逻辑来确保用户输入的密码满足要求。 3. 使用外部认证:如果你希望通过其他身份验证系统(如 LDAP 或 OAuth)来进行用户认证,可以将 PostgreSQL 配置为使用外部认证。这样,密码验证将由外部系统处理,不会在数据库中存储密码。 根据你的具体需求和安全策略,可以选择其中一种或多种方式来特殊设置 PostgreSQL 用户表的密码字段。请根据你的具体情况选择合适的方法,并确保实施适当的安全措施来保护用户密码。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值