想了解一下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
- Binding由几种选项
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的数据模型似乎延续了下来。
其他
(本篇完)