LDAP 基础知识

2019-07-21  本文已影响0人  风味沙拉

LDAP 基础知识

目录
LDAP 基础知识
--简介
--协议概览
--目录结构架构(Schema)
------对象类(objectClass)
------属性(Attribute)
------条目(Entry)
--LDAP 中的数据常用命令
------启动和关闭: start-ds / stop-ds
------检查 LDAP 服务器状态: status
------搜寻条目: ldapsearch
------修改密码: ldappasswordmodify
------列出 backends: list-backends
------导出 LDIF 文件: export-ldif
------导入 LDIF 文件: import-ldif
------管理账户: manage-account
--性能
--LDAP 浏览器
--参考文献

简介

LDAP 是 Lightweight Directory Access Protocol 的缩写,即 轻量目录访问协议。它基于 X.500 标准下更简单的子集标准开发,因此有时 LDAP 也被称之为 X.500-lite,即轻量级 x.500

目录服务在发展内部网络和因特网应用方面扮演着重要角色,它可以通过互联网分享用户、系统、网络、服务以及应用信息。

目录服务可以提供任何系统化的数据集,并以等级结构(hiearchical structure)呈现结果。比如,公司的邮件目录,或者包含地址和电话号码的电话目录。

LDAP 的一个常用功能是提供用户名和密码的集中存储。不同的应用和服务可以用其来认证用户。

协议概览

客户端发起 LDAP 会话连接到 LDAP 服务器。默认连接端口是 389(LDAP),或者 636(LDAPS)。客户端发起操作请求到服务器,服务器返回响应结果。客户端无需等待服务器响应即可发送下一个请求。服务器则会依次返回响应结果。

客户端可以发送如下操作请求:

目录结构

在 LDAP 里, 一切都是等级化的,或者称之为层级化(hiearchical)。

一棵树有树干,树枝和树叶;树叶长在树枝上,树枝依附于树干。这就是一个简单的层级结构。LDAP 的结构同一棵树类似。假设 LDAP 里存储的是公司的信息,那么可以把公司(company)本身理解为树干,公司里面的各个部门,比如(group),理解为树干,把用户(user)理解为树叶。这样的结构称之为目录信息树(DIrectory Information Tree,DIT)。

architecture.png

我们在目录信息树里创建一个条目(entry)时,条目的信息存储在属性(attribute)里,属性又被组合成对象类(objectClass),对象类进一步组成了架构(schema)。

下满我们来解释一下这几个重要的概念。

架构(Schema)

对象类(objectClass)

示例:下面是一个简单的 objectClass 定义

objectclass ( 2.5.6.2 NAME 'country' DESC 'RFC2256: a country'
  SUP top STRUCTURAL
  MUST c
  MAY ( searchGuide $ description ) )

解释:

属性(Attribute)

示例 1:下面是一个简单的 attribute 定义

attributetype ( 2.5.4.3 NAME ( 'cn' 'commonName' ) SUP name )

解释:

示例 2:

attributetype ( 2.5.4.41 NAME 'name'
  EQUALITY caseIgnoreMatch
  SUBSTR caseIgnoreSubstringsMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} )

解释:

条目(Entry)

下图是关于 objectClass, attribute 以及 entry 的示意图:

dit2.png

LDAP 中的数据

LDAP 中的数据以条目(entry)的形式呈现,就像英文字典里单词的条目。比如下面这个条目。它有很多属性,例如:uid:bjensen,mail:bjensen@example.com。查找条目时,只需要指定一个或者多个属性即可。

同时,该条目有一个唯一识别名称:dn: uid=bjensen,ou=People,dc=example,dc=com。DN 是 Distinguished Name 的缩合。在目录里没有两条相同的唯一识别名称。

dn: uid=bjensen,ou=People,dc=example,dc=com
uid: bjensen
cn: Babs Jensen
cn: Barbara Jensen
facsimileTelephoneNumber: +1 408 555 1992
gidNumber: 1000
givenName: Barbara
homeDirectory: /home/bjensen
l: San Francisco
mail: bjensen@example.com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: posixAccount
objectClass: top
ou: People
ou: Product Development
roomNumber: 0209
sn: Jensen
telephoneNumber: +1 408 555 1862
uidNumber: 1076

常用命令

鉴于大多数的 LDAP 软件大同小异,这里的内容就以OpenDS/OpenDJ 为例。

启动和关闭: start-ds / stop-ds

检查 LDAP 服务器状态: status

搜寻条目: ldapsearch

修改密码: ldappasswordmodify

列出 backends: list-backends

导出 LDIF 文件: export-ldif

导入 LDIF 文件: import-ldif

管理账户: manage-account

性能

可以快速查看 <install-dir>/logs:

BIND RES conn=5 op=2 msgID=23 result=0 authDN="uid=wcadmin,ou=people,cn=AdministrativeLdap,cn=Windchill_11.2,o=ptc" etime=0

其中,etime 的值默认以毫秒(milliseconds)为单位,表示服务器处理请求的时间。过大的 etime 通常暗示服务器存在性能问题。

如果需要调整 LDAP 的 JVM运行参数,可以编辑 <install-dir>/config/java.properties, 然后使用 dsjavaproperties 命令使设置生效。具体示例可参考这里

其他需要考虑的性能调优因素可以参考官方文档

LDAP 浏览器

LDAP 浏览器可以连接到 LDAP 服务器,让我们可以方便的查看、搜索、编辑 LDAP 内容。JXplorer 就是这样一款免费的开源浏览器。当然,有很多其他的 LDAP 浏览器,大家可以自行下载尝试。

参考文献

  1. https://baike.baidu.com/item/LDAP/2875565?fr=aladdin
  2. https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
  3. http://www.zytrax.com/books/ldap/
  4. https://backstage.forgerock.com/docs/opendj/3.5/admin-guide/#d67718e231
上一篇 下一篇

猜你喜欢

热点阅读