LDAP结构

LDAP结构

 

 

 

 

 

翻译人:林勇                 QQ:313340285

Email:showsscel@gmail.com   MSN:showsscel@hotmail.com

Skype:showsscel

 

 

 

 

LDAP结构 – LDAP Structures

 

2007 3 16

版本:1.0

 

       本文仅代表个人对Shark的理解,如有理解错误或不准确的地方,敬请大家指出,我将急时修证。迎大家共同交流、相互学习。

 

 

 

 

 

 


能够被Enhydra Shark的用户组和认证API接口的LDAP实现使用的LDAP结构

目录

3

3

5

 

介绍……………………………………………………………………………………………

LDAP 结构,类型0……………………………………………………………….. …………

LDAP 结构,类型1……………………………………………………………………………

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

介绍

       轻型目录访问协议(LDAP)是目录访问协议的轻型版本,是X.500协议的一部份。它即不是目录也不是数据库,LDAP是一个在目录环境中客户端如何能够访问和更新数据的访问协议。

       些刻,shark的用户组和认证API接口的LDAP实现支持LDAP结构的两种类型。第一种结构是标记类型0,第二种结构是标记类型1

LDAP 结构,类型0

       这是一个简单LDAP结构。它包含组和用户。LDAP对象类列表描述通过配置参数LDAPGroupObjectClasses定义用户组。如果不定义默认值是:

       LDAPGroupObjectClasses=organizationalUnit

    LDAP对象类列表描述通过配置参数LDAPUserObjectClasses定义用户。如果不定义默认值是:

       LDAPUserObjectClasses=inetOrgPerson

       组和用户都没有一个包含表示属于那个组或用户信息的属性。因此,一个用户(或组)只能属于一个组。通过dn(专有名称)定义一个用户(或组)仅仅属于一个组。LDAPGroupUniqueAttributeName参数定义每个LDAP对象类描述用户组

       LDAPGroupUniqueAttributeName=ou

 

    LDAPUserUniqueAttributeName=userid

    例如,下列的数据能够描述结构类型0

       version: 1

dn: o=SunsetComputers, c=sr

objectClass: top

objectClass: organization

o: SunsetComputers

version: 1

 

dn: userid=sasaboy, ou=developers, ou=programers, o=SunsetComputers, c=sr

objectClass: top

objectClass: inetOrgPerson

cn: Sasa Smith

givenname: Sale

initials: S.S.

mail: sasasmith@sunsetcomputers.com

mobile: 067/66688844

postaladdress: Tm92aSBTYWQsIFNla3NwaXJvdmEgNS8xMDAJ

postofficebox: 21000

sn: Smith

st: Serbia

street: 6th street 74

title: B.S.C. in E.E.

userid: sasaboy

userpassword:: c2FzYWJveQ==

 

dn: userid=simbe, ou=designers, ou=programers, o=SunsetComputers, c=sr

objectClass: top

objectClass: inetOrgPerson

cn: Sean Young

givenname: Sean

initials: S.Y.

mail: seanyoung@sunsetcomputers.com

mobile: 067/88833366

postaladdress: Tm92aSBTYWQsIFNla3NwaXJvdmEgNS8xMDAJ

postofficebox: 21000

sn: Young

st: Serbia

street: 4th street 27

title: B.S.C. in E.E.

userid: simbe

userpassword:: c2ltYmU=

 

dn: ou=programers, o=SunsetComputers, c=sr

objectClass: top

objectClass: organizationalUnit

ou: programers

 

dn: ou=developers, ou=programers, o=SunsetComputers, c=sr

objectClass: top

objectClass: organizationalUnit

ou: developers

 

dn: ou=designers, ou=programers, o=SunsetComputers, c=sr

objectClass: top

objectClass: organizationalUnit

ou: designers

    在这个例子中,有三个组:

    ·programes

    ·developer

    ·designer

       和两个用户:

       ·sasaboy

    ·simbe

developer属于组programers它被定义通过它的dn:ou=developers,ou=programmers,o=SunsetComputers,c=sr.designer也属于组programers(它的dn:ou=designers,ou=programmers,o=SunsetComputers,c=sr).

用户sasaboy属于组developers(它的dn:userid=sasaboy,ou=developers,ou=programmers,o=SunsetComputer,c=sr).用户simbe属于组designers(它的dn:userid=simbe,ou=designers,ou=programmers,o=SunsetComputers,c=sr).

LDAP 结构,类型1

       这是复合LDAP结构。它也包含组和用户。参数LDAPGroupObjectClasses, LDAPUserObjectClasses, LDAPGroupUniqueAttributeName LDAPUserUniqueAttributeName被使用与结构类型0相同的方式。在结构类型中用户和组相比,类型1提供定义组与组之间和组与用户之间的关系(“属于”)。LDAP对象类列表描述shark用户与组之间或通过配置参数LDAPRelationObjectClasses定义的shark组之间的关系。如果没有定义默认值是:

       LDAPRelationObjectClasses=groupOfNames

       对象类有两个重要的属性。LDAPRelationUniqueAttributeName参数定义每个LDAP对象类描述关系的强制属性名。这个属性值为LDAP树每个LDAP条目。如果没有定义默认值是:

       LDAPRelationUniqueAttributeName=cn

       LDAPRelationMemberAttributeName参数定义描述包含(用户或组)在关系中的成员LDAP对象类的属性名称 成员也是定义在关系中的属于组的用户或组。默认值是:

       LDAPRelationMemberAttributeName=member

      

       例如,下列的数据能够描述结构类型1

   version: 1
    
dn: o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organization
    
o: SunsetComputers
    
version: 1
    

  
    
  
dn: ou=Groups, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: Groups
    

  
    
  
dn: ou=Users, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: Users
    

  
    
  
dn: ou=GroupRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: GroupRelations
    

  
    
  
dn: ou=UserRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: UserRelations
    

  
    
  
dn: ou=programers, ou=Groups, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: programers
    

  
    
  
dn: ou=designers, ou=Groups, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: designers
    

  
    
  
dn: ou=developers, ou=Groups, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: developers
    

  
    
  
dn: ou=testers, ou=Groups, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: codeDesigners
    

  
    
  
dn: userid=sasaboy, ou=Users, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: inetOrgPerson
    
cn: Sasa Smith
    
givenname: 
    
     
      Sale
     
    
    
initials: S.S.
    
mail: sasasmith@sunsetcomputers.com
    
mobile: 067/66688844
    
postaladdress: Tm92aSBTYWQsIFNla3NwaXJvdmEgNS8xMDAJ
    
postofficebox: 21000
    
sn: Smith
    
st: 
    
     
      Serbia
     
    
    
street: 
    
     
      6th street
     
     74
    
title: B.S.C. in E.E.
    
userid: sasaboy
    
userpassword:: c2FzYWJveQ==
    

  
    
  
dn: userid=simbe, ou=Users, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: inetOrgPerson
    
cn: Sean Young
    
givenname: Sean
    
initials: S.Y.
    
mail: seanyoung@sunsetcomputers.com
    
mobile: 067/88833366
    
postaladdress: Tm92aSBTYWQsIFNla3NwaXJvdmEgNS8xMDAJ
    
postofficebox: 21000
    
sn: Young
    
st: 
    
     
      Serbia
     
    
    
street: 
    
     
      4th street
     
     27
    
title: B.S.C. in E.E.
    
userid: simbe
    
userpassword:: c2ltYmU=
    

  
    
  
dn: cn=testers, ou=UserRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: groupOfNames
    
cn: testers
    
member: userid=sasaboy, ou=Users, o=SunsetComputers, c=sr
    

  
    
  
dn: cn=developers, ou=UserRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: groupOfNames
    
cn: developers
    
member: userid=simbe, ou=Users, o=SunsetComputers, c=sr
    

  
    
  
dn: cn=SunsetComputers, ou=GroupRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: groupOfNames
    
cn: SunsetComputers
    
member: ou=programers, ou=Groups, o=SunsetComputers, c=sr
    

  
    
  
dn: cn=programers, ou=GroupRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: groupOfNames
    
cn: programers
    
member: ou=designers, ou=Groups, o=SunsetComputers, c=sr
    
member: ou=developers, ou=Groups, o=SunsetComputers, c=sr
    

  
    
  
dn: cn=designers, ou=GroupRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: groupOfNames
    
cn: designers
    
member: ou=testers, ou=Groups, o=SunsetComputers, c=sr
    

  
    
  
dn: cn=developers, ou=GroupRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: groupOfNames
    
cn: developers
    
member: ou=testers, ou=Groups, o=SunsetComputers, c=sr
    

       在这个结构中,4个假设的组必须创建。第一个用包含所有的组。它的名称被定义通过参数LDAPGroupGroupsName如果没有定义默认值是:

       LDAPGroupGroupsName=Groups

       在这个例子中,这个组被定义为:

dn: ou=Groups, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: Groups
    

       第二个组包含所有用户。它的名称被定义通过参数LDAPGroupUsersName如果没有定义默认值是:

       LDAPGroupUsersName=Users

       在这个例子中,这个组被定义为:

 dn: ou=Users, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: Users
    

       第三个组包含所有组之间的关系。它的名称被定义通过参数LDAPGroupGroupRelationsName。如果没有定义默认值是:

       LDAPGroupGroupRelationsName=GroupRelations

       在这个例子中,这个组被定义为:

 dn: ou=GroupRelations, o=SunsetComputers, c=sr
    
objectClass: top
    
objectClass: organizationalUnit
    
ou: GroupRelations
    

       在这个例子中,四个组被定义(他都属于组Groups看他们的dn):

       ·programers(dnou=programmers,ou=groups,o=SunsetComputers,c=sr)

    ·developers(dnou=developers,ou=groups,o=SunsetComputers,c=sr)

    ·designers(dnou=designers,ou=groups,o=SunsetComputers,c=sr)

    ·testers(dnou=testers,ou=groups,o=SunsetComputers,c=sr)

    和两个用户(它们属于组User看它们的dn):

    ·sasaboy(dnuserid=sasaboy,ou=groups,o=SunsetComputers,c=sr)

·simbe(dnuserid=simb,ou=groups,o=SunsetComputers,c=sr)

developerdesigners属于组programers在这个例子中,这是定义为:

dn: cn=programers, ou=GroupRelations, o=SunsetComputers, c=sr

objectClass: top

objectClass: groupOfNames

cn: programers

member: ou=designers, ou=Groups, o=SunsetComputers, c=sr

member: ou=developers, ou=Groups, o=SunsetComputers, c=sr

       注意:。这是在结构类型1中使用惯例。

       tester属于组developersdesigner在这个例子中,这是定义为:

   dn: cn=designers, ou=GroupRelations, o=SunsetComputers, c=sr
    

objectClass: top

objectClass: groupOfNames

cn: designers

member: ou=testers, ou=Groups, o=SunsetComputers, c=sr

 

dn: cn=developers, ou=GroupRelations, o=SunsetComputers, c=sr

objectClass: top

objectClass: groupOfNames

cn: developers

member: ou=testers, ou=Groups, o=SunsetComputers, c=sr

       因此,在这个结构类型,一个组能够属于多个组。

       用户sasaboy属于组tester和用户simbe属于组developer。在这个例子中,这是被定义为:

dn: cn=testers, ou=UserRelations, o=SunsetComputers, c=sr
    

objectClass: top

objectClass: groupOfNames

cn: testers

member: userid=sasaboy, ou=Users, o=SunsetComputers, c=sr

 

dn: cn=developers, ou=UserRelations, o=SunsetComputers, c=sr

objectClass: top

objectClass: groupOfNames

cn: developers

member: userid=simbe, ou=Users, o=SunsetComputers, c=sr

       同样在组关系中,这个对象类描述用户关系(在这个例子中是groupOfNames)有唯一关系属性(在这个例子中是cn)设置到包含那个用户被定义在成员属性。这是在结构类型1中的惯例。

       相同方式为一个组能够属于多个组,并且用户能够属于多个组。

 
### 如何使用 LDAP 建立和配置目录结构 LDAP(轻量级目录访问协议)是一种开放的标准协议,用于访问和维护分布式目录信息服务。通过创建和配置 LDAP 的目录结构,可以有效地管理和组织大量的数据资源。 #### 1. 使用 `mksecldap` 命令初始化 LDAP 环境 在 AIX 平台上,可以通过运行 `mksecldap` 命令来快速设置 LDAP 环境并构建基础的目录结构。此命令会完成一系列预定义的任务,包括但不限于创建 DB2 数据库实例、导出用户和组信息以及启用 SSL 支持等[^1]。 ```bash mksecldap -s -a cn=admin -p admin_password -S rfc2307aix ``` 该命令的具体作用如下: - `-s`: 表示服务器模式。 - `-a cn=admin`: 设置管理员 DN (Distinguished Name)。 - `-p admin_password`: 配置管理员密码。 - `-S rfc2307aix`: 启用 RFC2307 扩展支持以兼容 AIX 用户和组管理。 #### 2. 设计和规划目录树结构 设计合理的目录树结构对于后续的数据查询效率至关重要。通常情况下,根节点表示整个域,子节点则代表不同的部门或分类。例如: ``` dc=example,dc=com ou=People uid=jdoe uid=bob ou=Groups cn=developers cn=managers ``` 在此示例中: - `dc=example,dc=com` 是域名组件(Domain Component),作为顶级容器。 - `ou=People` 和 `ou=Groups` 分别用来存储人员记录和分组信息。 - 每个用户的唯一标识符由 `uid=` 开头指定;而每组成员关系则通过 `cn=` 来描述。 #### 3. 添加自定义条目至 LDAP 目录 为了向现有目录添加新的对象类或者属性值,需编写 LDIF 文件(LDAP Data Interchange Format)并通过工具加载这些更改。下面是一个简单的例子展示如何新增一位员工的信息: ```ldif dn: uid=jdoe,ou=People,dc=example,dc=com objectClass: inetOrgPerson cn: John Doe sn: Doe mail: jdoe@example.com telephoneNumber: +1 555 1234567 ``` 利用 ldapadd 工具上传上述内容到服务器上即可实现插入操作: ```bash ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f new_entry.ldif ``` 其中参数含义分别为: - `-x`: 显式绑定方式。 - `-D`: 绑定身份即管理员账户名。 - `-W`: 提示输入对应的身份验证所需的口令。 - `-f`: 加载来自指定文件中的修改指令集。 #### 4. 测试连接与检索功能 确认客户端能够成功连通目标 LDAP 服务端之后,尝试执行一些基本读取请求检验预期效果是否达成。比如借助 ldapsearch 查找特定范围内的所有实体列表: ```bash ldapsearch -LLL -b 'dc=example,dc=com' '(objectclass=*)' ``` 以上命令将会返回匹配条件下的全部结果项,并采用纯文本形式呈现出来便于阅读分析。 --- ### 总结 综上所述,从零开始搭建基于 LDAP 技术框架之上的企业内部通讯簿系统并非难事。只需按照既定流程依次完成环境部署准备阶段的工作事项——调用专用脚本简化初始配置过程;精心策划顶层架构布局方案满足实际业务需求场景特点;最后再辅以外部辅助手段不断优化完善整体性能表现水平直至达到理想状态为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值