从专有名称到用户身份验证

组织机构通常依赖轻量级目录访问协议(LDAP)来进行关键的用户管理、数据存储和身份验证。

然而,用户常常会感到困惑,容易将其与活动目录(Active Directory)混淆。

本文将深入探讨 LDAP,包括其用途和工作原理。 之后,我们将研究其主要特点、目录结构和数据组织方式。 最后,我们会强调 LDAP 在管理目录服务和用户身份验证方面的重要性。

什么是 LDAP?

LDAP,即轻量级目录访问协议,是一种开放标准协议,用于管理本地目录中的安全用户身份验证。 此外,它是一种与供应商无关的应用协议,因此用途广泛,尤其是在互联网上的分布式目录信息服务中非常普及。

LDAP 在支持应用程序查询用户信息方面表现出色。 这意味着它可以在各种 IT 基础设施服务中发挥作用,包括电子邮件服务、授权、许可证管理和用户管理。

需要注意的是,不应将其与活动目录服务混淆。活动目录服务是一套企业用于组织、访问和保护 IT 资产的服务/数据库。 简而言之,目录服务允许组织存储描述性、静态且有价值的数据。

从技术角度来看,LDAP 负责目录服务中数据呈现的完整过程。 它确保用户可以按照预定义的方式获取数据。 这表明 LDAP 使组织能够通过其工具在目录服务中创建数据条目。

因此,在活动目录中,LDAP 还负责管理条目如何根据概述的不同原始元素进行构建。

简而言之,LDAP 的特点包括:

  • 一种通信协议
  • 一个开放的、与供应商无关的应用协议
  • 一种用于存储和组织数据以便于检索的软件协议
  • 使用本地目录
  • 使用包含静态、描述性且有价值数据的活动目录
  • 并非新协议,于2003年发布

它的目的是什么?

LDAP 的核心目的围绕以下几个方面:

  • 将数据存储在 LDAP/活动目录中
  • 验证用户对该目录的访问权限
  • 允许应用程序使用适当的通信语言从目录服务发送和接收数据

换句话说,它是一种通信协议,不仅支持身份验证和授权,还以可搜索的方式组织数据。 通过 LDAP,组织可以存储关键的用户和 IT 资产信息,包括用户凭据。 此外,通过让管理员主动设置访问规则,它还可以确保安全访问。

LDAP 是如何工作的?

LDAP 的核心是一个客户端-服务器架构。

因此,在进行 LDAP 身份验证时,它遵循客户端-服务器模型。 其中,主要参与者包括:

  • 目录系统代理 (DSA):在特定网络上运行 LDAP 的服务器。
  • 专有名称 (DN):包含用于在目录信息树 (DIT) 中导航的路径。
  • 目录用户代理 (DUA):DUA 用作客户端访问 DSA。
  • 相对专有名称 (RDN):RDN 指定 DN 路径中的每个组件。
  • 应用程序编程接口 (API):API 用于服务和产品之间的通信。

在 LDAP 身份验证过程中,当用户启动 LDAP 客户端程序(例如电子邮件应用程序)时,管理员可以配置 LDAP 客户端如何与目录服务交互以进行身份验证。 例如,可以使用两种可用的用户身份验证方法中的任何一种:

在登录尝试中,会请求 DN 身份验证。 进程启动后,LDAP 会将客户端分配给目录系统代理 (DSA),后者使用 DN 在数据库中搜索匹配的记录。

DN 中的相对专有名称 (RDN) 是 LDAP 搜索的关键,因为它在目录信息树 (DIT) 搜索过程的每个步骤中使用。

如果搜索成功,则匹配相应的 UID 和用户密码以验证用户。 如果未找到匹配项,则返回无效结果。

最后,客户端断开与 LDAP 服务器的连接。 完成后,经过身份验证的用户就可以通过 API 与服务进行通信。 这意味着他们可以浏览所有存储的信息,唯一的限制是已授予的权限。

如果想更深入了解 LDAP 的工作原理,可以参考 Greg Vaneder 和 Mark Wahl 于 2003 年发表的论文。此外,如果想了解有关 LDAP 搜索操作的更多信息,可以查阅 LDAP 搜索操作。

LDAP 的主要特点

LDAP 的主要功能可总结如下:

  • 用户会话身份验证:它可用于对数据库服务(例如活动目录)的用户会话进行身份验证。
  • 不同的操作类型:它还支持对目录服务器数据库进行操作,包括:
    • 绑定会话
    • 删除 LDAP 条目
    • 修改现有条目
    • 搜索和比较条目
    • 放弃请求
    • 解绑操作
  • 轻量级:LDAP 具有轻量级的特点,确保对网络和系统资源的开销很小。
  • 独立于供应商和协议:LDAP 不受供应商和协议的限制,这意味着它可以与任何供应商/解决方案/协议兼容。 例如,可以使用基于 TCP/IP 或 X.25 的 LDAP。 然而,最新的 LDAP 版本 LDAPv3 使用 TCP/IP。
  • 目录结构:LDAP 使用目录树结构来存储和访问目录数据库中的资产。 父子关系能够加快搜索和检索速度。
  • 标准化:LDAP 已被互联网工程任务组(IETF)标准化。 标准化确保 LDAP 可以在不同的供应商之间正常工作。
  • 安全性:LDAP 是安全的。 它通过在 TCP/IP 层使用安全 TLS 来实现安全性。 它还可以使用安全套接字 (SSL) 来远程加密、解密和传输信息,保证完整性和机密性。
  • 复制:LDAP 还支持跨多个服务器的复制,确保数据冗余,并在发生故障时提供数据可用性。 它使用 Syncrepl,这是一个同步复制引擎。

LDAP 目录结构

LDAP 目录具有清晰且结构化的组织,方便数据访问,并增强 LDAP 目录内容的可搜索性。

由于 LDAP 遵循树形结构,因此它是分层组织的。 这也是为什么它经常用作目录信息树 (DIT) 的原因。

LDAP 目录结构的不同级别包括:

  • 根目录
  • 组织

如您所见,LDAP 目录采用树形结构。“根”目录是顶级条目,包含了目录级别中的所有其他条目。 在其下方,是 Country(国家),然后分支到 Organization(组织)。 接下来,它又分支到组织单位 (OU),最后是个人和组。

为了更好地理解 LDAP 目录结构,让我们看下面的示例:

 - Root (Top-level entry)
   |
   +-- Country: "dc=com" (e.g., dc=example,dc=com)
         |
         +-- Organization: "dc=example" (e.g., dc=example)
               |
               +-- Organizational Unit (OU): "ou=Users"
               |      |
               |      +-- User: "cn=Nitish Singh"
               |      |
               |      +-- User: "cn= Oliver Green"
               |
               +-- Organizational Unit (OU): "ou=Groups"
                      |
                      +-- Group: "cn=Admins"
                      |
                      +-- Group: "cn=Users"
		      |
		      +-- Group: “cn=Superusers”

根实体用 DC 标识,它代表域组件属性。 因此,如果“dc=com”,则根条目被标识为“com”域。

在根目录下,您可以拥有多个组织或域。 这由 “dc=organization” 表示,例如“com”域下的 “dc=example”。

同样,每个组织可以拥有一个或多个组织单位 (OU)。 管理员可以将它们逻辑地组织成子部分。 例如,可以将 OU 设置为“用户”、“组”或“超级用户”。

最后,在每个 OU 下,可以列出不同的条目,包括组、设备、用户等。在上面的示例中,OU 用户的两个值包括“Nitish Singh”和“Oliver Green”。 同样,在 OU 组下,有“管理员”、“用户”和“超级用户”。

LDA 目录结构在很大程度上依赖于可分辨名称 (DN),因为它用于标识每个条目。 这是因为它包含唯一名称,并用于检索相对专有名称 (RDN)。

LDAP 常用元素

要了解 LDAP 数据组织,我们需要了解 LDAP 的常用元素,这些元素决定了 LDAP 系统中条目的结构。

基本的 LDAP 数据组件包括:

  • 属性
  • 条目
  • 数据信息树

属性

LDAP 中的属性是键值对,用于将数据存储在 LDAP 系统中。 例如,属性“邮件”用于在 LDAP 系统中存储邮件。

邮件:[email protected]

条目

LDAP 系统中的条目将自身与属性相关联,以提供意义。 您可以将条目视为相关属性的集合。

例如,以 LDIF(LDAP 数据交换格式)格式表示的数据如下所示:

dn: sn=Hogwarts, ou=wizards, dc=WizardingWorld, dc=fiction

objectclass: wizard

sn: Hogwarts

cn: Harry Potter

数据信息树

数据信息树 (DIT) 用于表示和访问 LDAP 系统中的数据。 由于大多数数据是分支的,因此以树形结构表示非常合理。 它类似于具有父子关系的文件系统。

LDAP 数据组织

现在我们已经了解了基本概念,可以开始探讨 LDAP 系统中的数据组织方式。

在这里,LDAP 利用 DIT 来组织和结构化数据。 那么,它是如何实现的呢? 让我们在下面讨论。

条目按层次结构放置在 DIT 中,条目之间相互关联。 因此,当创建新条目时,它将作为现有条目的子项添加到树形结构中。

一切都从 DIT 层次结构树的顶部开始。 由于它涵盖了所有的子条目,因此通常被标记为一个组织,例如“dc=com”或“example”。 这是使用域组件完成的,以确保易于管理。 管理员可以使用“l=location_name”或组织段设置位置,例如“ou=tech”、“marketing”等。

这些条目使用组织单位 (OU) objectClass。 这是因为条目可以使用属性标签“ou=”。 这些条目简单且有效,提供了在 DIT 中分类和查找信息的绝佳方法。

接下来是另一个重要的概念,称为相对专有名称。 它是元素的相对名称,取决于它在 DIT 层次结构中的级别。 因此,要访问条目,需要输入实体的 RDN 值以及父实体的 RDN 值。

这将创建一个从底部到顶部的 RDN 值链,形成到达该条目的路径。 而这条 RDN 值链被称为“专有名称 (DN)”。

换句话说,在创建条目时必须指定 DN,以便 LDAP 清楚地知道您需要将新资产或信息放置在何处。 因此,RDN 充当相对值,而 DN 更像是绝对路径。

LDAP 的重要性

在本节中,我们将从两个角度探讨 LDAP 的重要性:

  • 管理目录服务:LDAP 协议提供了存储和访问 LDAP 目录数据的适当方法。 我们已经在“LDAP 的工作原理和数据组件”和“组织”部分讨论了这些方法。 LDAP 是一种管理、存储、访问和保护数据的方法。 它还确保了有效的信息检索,并提供了可扩展性和复制功能。
  • 用户身份验证:除了管理目录服务外,LDAP 在用户身份验证和授权方面也表现出色。 建立连接后,用户可以根据管理员设置的访问规则访问存储的资产。

LDAP 与活动目录

人们经常混淆 LDAP 和活动目录。 LDAP 和 Microsoft 的活动目录密切合作,为组织提供了一种安全可靠的方法来跨部门存储和访问组织数据。

因此,LDAP 是一种协议,而活动目录是一种目录服务产品,用于以树形结构存储组织数据。

LDAP 用作访问目录服务器(例如活动目录)的通信协议。

结论

LDAP 是使用活动目录服务的关键协议。 它是一种轻量级协议,对其使用的服务和服务器几乎没有开销。 此外,其开源、与供应商无关和标准化的特性使其可以轻松集成到现有解决方案中。

您还可以进一步了解多因素身份验证 (MFA)。