想了解一下LDAP,于是乎打开Google,搜了一下LDAP,看了一些首页的文章。

LDAP: Explained

LDAP用来从Directory Service获取数据。

也就是说,LDAP获取的是目录中的利息。而目录是一种通用的抽象的慨念,可以是一个储存企业信息的目录,一个储存设备信息的目录,一个储存用户信息的目录。

数据是以层级结构存储在DIT(Directory Informatino Tree)中的。

LDAP基于DAP(Directory Access Protocol),由OSI的x.500定义。DAP比较繁琐,LDAP较轻量化(L代表Lightweight),并且能够在TCP/IP协议上良好运行。

LDAP一个典型的用例是中心化的用户的验证和授权。即有一个中心的用户目录服务于和用户相关的各种操作,提供用户相关的各种信息。

LDAP协议是CS结构。一个客户端到服务端的会话叫做一个’binding'。客户端提供代表用户的凭证,然后服务端判定其真伪。

LDAP可以分解为4个模型:

  • Information Model
    • 每个目录包含若干条目(entries)
    • 每个条目代表某种标的
    • 条目包含若干属性,用于描述标的
  • Naming Model
    • 条目具有DN(Distinguished Name),代表条目在DIT中索引路径
    • DN由RDN(Relative DN)构成,每个RDN占据条目的一个属性
  • Functional Model
    • Query功能用于获取信息
    • Update功能用于更新信息
    • Authentication功能只是用于验证用户的凭证
    • 具体操作为
      • Search,以用户定义的准绳来搜索数据并返回结果
      • Compare, 请求服务端对条目的某属性进行比对
      • Update,请求更改信息
        • Delete,删除条目
        • Add,添加条目
        • Modify,修改条目的属性
      • Bind,搭建客户端到服务端会话
      • Unbind,终止会话
      • Abandon,请求服务端废止一个正在进行的操作
  • Security Model
    • Binding由几种选项
      • No Authentication (也就是不验证用户)
      • Basic Authentication
        • 客户端需要提供DN以及密码作为验证
        • 密码是明文发送
      • SASL, Simple Authentication and Security Layer

LDAP通常和AD(Active Directory)混谈。但前者是协议,后者是服务。AD提供组策略(Group Policy (GPO)),可以允许管理员控制Windows设备以及SSO(Single Sign-On)。这两个服务都不出现在LDAP的功能列表中。

LDAP自己不带加密功能。LDAPS(Secure LDAP)通过SSL/TLS为LDAP提供加密通信。

RADIUS提供和LDAP类似功能,不过RADIUS无法储存用户信息;LDAP无法提供审计用的MFA功能,但是RADIUS提供。一个变通的办法是通过LDAP向RADIUS提供用户目录信息。云端的RADIUS默认提供基于x.509的802.1x/EAP-TLS验证服务。

基于证书的验证方式越来越流行了。

LDAP FAQs提供一些Windows上使用LDAP的小技巧。

What is LDAP and how does it work?

LDAP的初始目标是提供一个DAP的轻量化替代。

AD(Active Directory)是微软开发的用于Windows域网络。

一个典型的LDAP配置以树形组织,如下实例:

  • 根目录
    • 国家目录
    • 组织或者公司目录
    • 分区,部门或者其他组织单元
    • 人员,文件以及其他共享资源(打印机,计算机等等)

LDAP数据组件来完成(myriad of tasks)

  • 属性attributes
  • 条目entries
  • 数信树(Data Information Tree)
  • 形式(Schemas)

和SAML相比,LDAP通常是on-premise部署的。Kerberos则是SSO协议。

What Is LDAP & How Does It Work?

过。

Lightweight Directory Access Protocol (LDAP)

MFA为Multi Factor Authentication之缩写。

The Difference Between Active Directory and LDAP

Kerberos Authentication Explained

过。

Wikipedia Directory service

https://en.wikipedia.org/wiki/Directory_service#LDAP_implementations列举了一些LDAP的实现。

Wikipedia Lightweight Directory Access Protocol

列举了一个条目的属性合集的例子:

 dn: cn=John Doe,dc=example,dc=com
 cn: John Doe
 givenName: John
 sn: Doe
 telephoneNumber: +1 888 555 6789
 telephoneNumber: +1 888 555 1232
 mail: john@example.com
 manager: cn=Barbara Doe,dc=example,dc=com
 objectClass: inetOrgPerson
 objectClass: organizationalPerson
 objectClass: person
 objectClass: top

dn为distinguished name;cn为此项的RDN,dc含义为Domain Component。

Wikipedia X.500

竟然是1988年就制定了的,有以下协议:

  • Directory Access Protocol
  • Directory System Protocol
  • Directory Information Shadowing Protocol
  • Directory Operational Bindings Management Protocol
  • Certificaste Authority Subscription Protocol
  • Authorization Validation Management Protocol
  • Trust Broker Protocol

原本是基于OSI通信协议模型。

虽然IETF重新制定了通信协议,但X.500的数据模型似乎延续了下来。

其他

(本篇完)