快速跳转

什么是轻量级目录访问协议(LDAP)身份验证?

复制 URL

轻量级目录访问协议(LDAP)是一种可帮助用户查找关于企业和人员等数据的协议。LDAP 有两大工作目标:一、将数据存储在 LDAP 目录中;二、对要访问目录的用户进行身份验证。它也为应用提供所需的通信语言,以便从目录服务收发信息。借助目录服务,用户可以访问网络中的企业、个人信息和其他数据的存储位置

LDAP 最常见的用法是提供一个集中位置来访问和管理目录服务。LDAP 让企业能够存储、管理和保护与该企业、其用户和资产有关的信息(比如用户名和密码)。它提供分层的信息结构,可以让用户快速、高效地访问存储内容,当企业在扩大规模、吸纳了更多用户数据和资产时,这是一个相当重要的优势。

LDAP 也可充当身份和访问管理(IAM)解决方案来满足用户身份验证的需要,支持 Kerberos 和单点登录(SSO)、简单身份验证安全层(SASL)和安全套接字层(SSL)。

LDAP 是微软的 Active Directory(AD)目录服务中使用的核心协议(但并非是其专用);而 Active Directory 是一个大型目录服务数据库,包含网络中每一用户帐户的信息。更具体地说,LDAP 是目录访问协议(DAP)的轻量级版本,提供一个中央位置来访问和管理在传输控制协议/互联网协议(TCP/IP)上运行的目录服务,其最新版本是 LDAPv3。 

AD 提供身份验证以及用户和组管理,它是最终对用户或计算机执行身份验证的主体。这个数据库中包含的属性数量要比 LDAP 调用的数量多。不过,LDAP 擅长于使用少量信息来查找目录,因此不需要从 AD 提取它的全部属性,而且从哪一个目录服务调取也无关紧要。

LDAP 的主要目标是与 AD 通信,从中提取对象(如域、用户和组等),并以可用格式存储到位于 LDAP 服务器上的专用目录中。

我们可以这样比喻:AD 是世界上最庞大的图书馆,而您想要找一本书名提到丧尸的书。这本书是否在美国出版、是否超过 1000 页,或是否为丧尸末日逃生指南,对于 LDAP 而言都无关紧要——尽管它们确实有助于缩小目标的范围。LDAP 是经验丰富的图书管理员,它知道哪里可以找到满足您要求的所有选项,并且会验证您是否已找到要找的目标。

LDAP 检索是如何发起的?它是如何工作的?

LDAP 身份验证使用的是一种客户端加服务器型身份验证模式,包含以下几个重要组成部分: 

  • 目录系统代理(DSA):作为服务器,在其网络中运行 LDAP
  • 目录用户代理(DUA):作为客户端(例如,用户的个人电脑),访问 DSA
  • DN:即专有名称(Distinguished Name),包含了供 LDAP 检索的目录信息树(DIT)的路径(例如,cn=Susan、ou=users、o=Company)
  • 相对专有名称(RDN):专有名称路径中的各个组成部分(例如,cn=Susan)
  • 应用编程接口(API):通过 API,您无需了解实施原理,也能将您的产品或服务与其他其他产品或服务互通。

当用户尝试访问支持 LDAP 的客户端程序,例如其个人电脑上的商务电子邮件应用,整个 LDAP 流程就开始了。使用 LDAPv3 时,有两种用户身份验证方法:简单身份验证(例如,使用登录凭据的 SSO)和 SASL 身份验证(将 LDAP 服务器绑定到 Kerberos 等程序)。用户尝试登录时,系统会发送一个请求来鉴定分配给用户的 DN。DN 是通过启动 DSA 的客户端 API 或服务器发送的。

客户端会自动绑定到 DSA,LDAP 使用 DN 来搜索与 LDAP 数据库中记录相匹配的对象或对象集合。DN 中的 RDN 在这个阶段非常重要,因为它们会一步一步引导 LDAP 搜索 DIT,以找到所需个体。如果路径在后端缺少连接的 RDN,结果可能会呈现为无效。在本例中,LDAP 搜索的对象是个人用户帐户(cn=Susan),它只有在目录中的帐户有匹配的 uid 和 userPassword 时才会验证用户。用户组在 LDAP 目录中也被看做是对象。

一旦用户收到回复(无论有效或无效),客户端会从 LDAP 服务器解绑。然后,通过验证的用户可以访问 API 及其服务,包括所需的文件、用户信息和其他应用数据,具体取决于系统管理员授予的权限。

LDAP 采用轻量型结构并且使用了 DIT,因而能快速运行 LDAP 搜索并提供搜索结果。想要顺利浏览 LDAP 服务器并理解 LDAP 搜索的工作原理,了解 DIT 至关重要。

DIT 能够让用户快速浏览不同层级的 LDAP 目录,以缩小搜索结果范围并提供对查询的回复。DIT 以根目录开头,后跟国家或地区,然后划分为两个子类:域名(dc)和组织名称(o)。

域名(dc)

dc(例如,dc=com、dc=example)使用域名系统(DNS)映射来查找互联网域名并将其转译为 IP 地址。

大多数用户不知道他们搜索的个体的域名和/或 IP 地址。这时,LDAP 使用分配给用户的专有名称(DN)作为路径,以快速浏览 DIT 并找到搜索结果。接下来就要使用 o 子类了。

组织名称(o)

o 子类(例如,o-Company)是 DN 中列出的最常用子类之一,通常也是 LDAP 运行搜索时的起始位置。例如,一个简单路径通常以 o 子类开头,分叉到组织单元/部门(ou),后跟用户帐户或组。

组织单元(ou)

如前文所述,ou 是 o 的一个子类,通常表现为 ou=users 或 ou=group,分别包含用户帐户或组的列表。其在目录中可能如下所示:

  • o-Company

    • ou=groups

      • cn=developers

    • ou=users

      • cn=Susan 

通用名称(cn)

通用名称或 cn 用于标识组或个人用户帐户的名称(如 cn=developers、cn=Susan)。用户可以从属于某个组;因此,如果 Susan 是开发人员,则也可能会存在于 cn=developers 下。

属性和值

LDAP DIT 中的各个子类(即 o、ou、cn)包含属性或值,或含有 LDAP 目录相关信息的模式,它们有助于缩小搜索范围。属性有点像地址簿中的条目,有着名称、电话号码和地址等标签,每个属性分配有相应的值。例如,Susan 可能是 name 属性的值。

在 cn=Susan 帐户中,user id(uid)和 userPassword 是属性,而用户的登录凭据则是值。不过,在诸如 cn=developers 之类的组中,Susan 可能有 uniqueMember 属性(例如,uniqueMember=cn-Susan,ou-Users,o-Company)。这会将路径映射到 Susan 的个人用户帐户所处的位置,以及 LDAP 所搜索的信息。用户帐户是 DIT 中的末端,也是 LDAP 最终提取搜索结果的地方。

还有许多其他属性类型和语法可以帮助缩小搜索范围,包括 organizationalPerson(structural)或 personal(structural)等 ObjectClass。不过,为了保持轻量和易用,LDAP 中的属性数量是有限的。

企业网络管理员通常要同时管理成千上万的用户。这意味着,他们要根据用户的角色以及对日常任务所需文件(例如,访问公司内网)的访问权限来分配访问控制和策略。

LDAP 可以简化用户管理过程,节省网络管理员的宝贵时间,并使身份验证过程集中到同一个地方。在您采用 LDAP 之前,务必要思考以下几个问题:

  • 容量:您需要存储的用户管理数据有多少?要考虑实施 LDAP 解决方案的产品是否有足够容量来存储和管理您需要的所有数据。

  • 搜索频率:是不是有用户每天都需要访问的数据,如公司内网、电子邮件应用或服务?如果有,那么 LDAP 应该就很适合您。

  • 条理性:LDAP 中的简单 DIT 能否为您的数据提供足够的整理功能,还是说您需要更加细致周到的系统?

虽然 LDAP 通常在 AD 中使用,但也可用于为其他工具和客户端环境提供用户身份验证,例如 Unix 上的红帽目录服务器以及 OpenLDAP(Windows 上的一款开源应用)。您还可以将 LDAP 的身份验证和用户管理功能用于 API 管理基于角色的访问控制(RBAC),或者 Docker Kubernetes 等其他应用和服务。

红帽® 企业 Linux® 内含集中式身份管理功能,允许您使用跨整个数据中心的单个可扩展接口对用户进行身份验证,并实现 RBAC。

红帽企业 Linux 附带的身份管理涵盖了一系列身份验证和授权功能,例如:

  • 用于 Linux 的域控制器:用户可在这个可靠的集中式身份存储中集中管理所有用户、服务和主机的身份、访问权限和策略。这有助于减轻管理员负担并简化域注册,从而打造一个可信的安全边界。而用户也可以获得流畅的用户身份验证体验。

  • AD 集成:利用红帽企业 Linux 与 Active Directory 之间的原生集成,填补 Linux 和 Windows 之间的用户身份管理缺口。将 Active Directory 用作用户身份的单一数据源,直接将定制的访问控制策略应用到 Linux 域,以提高管理效率并将策略创建集于一处。

  • Kerberos SSO:利用 Kerberos(身份管理和身份验证的核心)简化用户身份验证过程,支持 SSO 用于基础架构。扩展到各项服务,以便无需密码就能完成身份验证,并且支持借助 SSO(基于 Keycloak)进行 Web 身份验证。

  • 系统角色:利用一致且可重复的配置工作流,节省时间和资源。自动化可大幅减轻技术负担,减少与长期部署和身份管理相关的手动任务。

对于具有更专业化需求的用户,红帽也以附加组件形式提供红帽目录服务器。

红帽目录服务器是一个基于 LDAP 的目录,可以面向多元大型环境进行扩展。使用近乎即用型的替代方案来取代成本高昂的现有第三方 LDAP 解决方案,利用一系列复制选项来管理分散而复杂的目录拓扑。此解决方案可为您的目录数据提供可自定义的属性和模式,为您带来灵活性。

扩展阅读

文章

使用红帽企业 Linux 进行边缘计算

红帽企业 Linux 可助您将混合云基础架构扩展至边缘——遍布全球的数十万个节点。

文章

SELinux 是什么?

安全增强型 Linux(SELinux)是一种采用安全架构的 Linux® 系统,它能够让管理员更好地管控哪些人可以访问系统。

文章

为什么选择红帽 Linux?

工作负载需要能够在各个环境中移植和扩展。红帽企业 Linux 是混合云部署中持续一致、稳定可靠的基础。

试用红帽企业 Linux

红帽企业 Linux 服务器

该版本的红帽企业 Linux® 能够编排硬件资源,并可以在物理系统、云端,或是作为虚拟机监控程序客户机运行。 

用于 IBM Power 的红帽企业 Linux

开源创新与 IBM 架构的结合,提供稳定的混合云基础。