有人可以解释一下LDAP吗?

68

我经常听到类似"我们能否使用LDAP来加载员工信息吗?"的问题。然而,"轻量级目录访问协议"这个标题让我认为它只是一个协议,而不是像Oracle或MSSQL这样的物理数据库管理系统。

那么有没有人能够向我解释一下LDAP是什么,它如何使用,以及它的基本工作原理是什么?LDAP仅仅是从各种数据库管理系统中提取数据的标准协议吗?在架构图中,LDAP是否只是在DB和应用服务器之间画的一个箭头?

10个回答

48

LDAP是一种用于查询用户目录的协议。例如,Active Directory或Novell eDirectory都支持LDAP。它也在一定程度上是一种语法,用于执行此类查询,就像SQL是用于查询数据库的查询语言。

一个LDAP命令可能如下所示

(givenName=Mike)

它会返回目录中所有名字为Mike的条目。


26

LDAP通常用作认证数据库。比方说你有一个CMS产品,你作为软件即服务出售。用户获得CMS之后,你会对其进行维护等。

因此,你将它安装在examplecustomer1.com、examplecustomer2.org和examplecustomer3.net上(每个域名一个软件)。现在你需要维护三个用户数据库。所以你将自己添加到所有系统中作为管理员,并添加客户账户。

然后你发现了LDAP。你为你的产品添加了LDAP支持,现在你有了一个中央用户数据库。你可以使用自己的用户名和密码登录所有系统作为管理员。CMS系统仍然包含用户数据库和每个用户的权限,但是现在用户名用作LDAP数据库的引用,CMS数据库模式中的密码字段被删除。


19

是的,LDAP(轻量级目录访问协议)是在TCP/IP上运行的协议。

它用于访问目录服务,如Microsoft的Active Directory或Sun ONE Directory Server。

目录服务是一种数据库或数据存储,但不一定是关系数据库。其结构通常要简单得多,存储名称-值对的分层集合,例如lastName=Smith,firstName=John。


2
一个重要的事情:LDAP与关系型数据库非常相似,但不同于关系型数据库的是,它针对读取进行了优化,因此通常比普通的RDBMS更适合作为存储密码的中心位置。 - Omar Ali

8

LDAP是一种协议,但我认识的许多人喜欢将其含义扩展为“任何能够响应LDAP查询的存储”。Active Directory是这样的一个存储,还有许多其他的。当架构师们无法确定存储时会使用它。这就像在不知道是MySql、Oracle还是SQL Server时说“将其存储在SQL中”一样。


6
LDAP是轻量级目录访问协议的缩写。它是一种可扩展的开放式网络协议标准,提供对分布式目录服务的访问。LDAP是运行在TCP/IP上的目录服务的互联网标准。在OpenLDAP和相关服务器中,有两个服务器-slapd是LDAP守护程序,查询将发送到该守护程序;slurpd是复制守护程序,数据从一个服务器推送到一个或多个从服务器。通过让多个服务器托管相同的数据,可以提高可靠性、可扩展性和可用性。
它定义了可以执行的操作,如搜索、添加、删除、修改和更改名称。它还定义了操作和数据的传递方式。
LDAP有潜力整合所有现有的应用程序特定信息,如用户、公司电话和电子邮件列表。这意味着在LDAP服务器上进行的更改将对使用此用户信息片段的基于目录服务的所有应用程序产生影响。有关新用户的各种信息可以通过单个接口添加,该接口将提供给Unix帐户、NT帐户、电子邮件服务器、Web服务器、特定工作新闻组等。当用户离开时,可以通过单个操作将其帐户禁用到所有服务中。
因此,LDAP最有用的是提供“白页”(例如姓名、电话号码、角色等)和“黄页”(例如打印机位置、应用程序服务器位置等)服务。在J2EE应用程序环境中,通常将使用它来验证和授权用户。

4

LDAP是什么:

LDAP全称为轻型目录访问协议(Lightweight Directory Access Protocol),是一种通信协议,微软实现了该协议用于活动目录服务和其他NTDS.DIT文件。让我们先澄清混淆的地方。NTDS.DIT包含活动目录数据库。要访问数据库,需要使用通信协议LDAP。就是这样。因此,NTDS.DIT是一个简单的数据库,即ADDS数据库(Active Director Directory Services)。我们如何访问它?

我们使用LDAP来访问。

让我们举个LDAP快速示例。
C:/users/data.doc

或者

LDAP语法

CN=Bob,OU=Users,DC=Youtube,DC=Com

CN = 规范名称(对象或名称)

OU = 组织单位(活动目录中的文件夹)

DC = 域控制器(位置在哪里)

其他信息:活动目录是基于X.500标准的数据库,其中包含所有AD对象,即NTDS.DIT文件。


4
LDAP是为了应对X.500协议族的复杂性而创建的一种协议。它旨在表示分层目录结构。最初,X.500标准旨在在完整的OSI层堆栈上使用,并被创建以满足电信行业的要求。LDAP的设计是使用TCP/IP来提供类似的功能,避免额外的开销。您可以在维基百科上找到有关X.500、OSI和LDAP的信息。大多数数据通信教材都涵盖了X.500和OSI。

好的回答,你可以通过在回答中直接提供所提到的维基百科链接来进一步完善它。 - lothar

2
LDAP是一种Internet协议,用于从服务器查找数据。该协议用于存储和检索分层目录结构中的信息。LDAP还遵循分层数据模型。简单来说,它是一个分层数据库,其中数据以树状结构存储,叶节点包含实际数据。
LDAP不定义程序在客户端或服务器上的功能,但它解释了将用于客户端和服务器之间通信的消息类型。消息可以是客户端请求的信息、服务器响应和数据格式。这些消息通过TCP/IP协议传递。因此,在客户端和服务器之间建立会话连接并在操作完成后断开连接应存在某些操作。LDAP可用于需要大量读操作和较少写操作的情况。例如,用户身份验证,我们知道用户名和密码不会经常更改。
LDAP操作过程
要开始通信,客户端需要与服务器创建会话。这个过程称为绑定。要绑定到服务器,客户端必须指定服务器所在的IP地址或主机名和TCP/IP端口号。客户端还可以提供凭据(如用户名和密码)以确保与服务器进行正确的身份验证。或者,客户端也可以使用默认访问权限创建匿名会话。或者,双方可以建立使用更强安全流程(如数据加密)的会话。
会话建立后,客户端就可以在目录数据上执行其预期的操作。在LDAP中,目录信息可以被管理和查询,因为它提供了读取和更新功能。
客户端在完成请求后关闭会话。这个过程称为解绑。
LDAP模式
LDAP主要依赖于数据模型,如:
信息模型 目录包括基本的信息单元,称为条目,它代表现实世界的对象,如服务器、人等。条目包括定义有关对象信息的属性集合。每个属性包括与语法相关联的类型和一个或多个值。以下图示说明了条目及其属性之间以及它们的类型和值之间的关系:
命名模型 LDAP的命名模型表示如何识别和组织条目。在LDAP中,条目按照层次结构或树状结构组织,称为DIT(Directory Information Tree)。条目按照它们的DN(可辨别名称)在DIT中排序,唯一标识单个条目。
功能模型 LDAP定义了客户端请求的操作,并可分为三类。它们是:
   1.  Query which is used to fetch information from a directory. Include operations like search and                   compare.

   2. Update which is used to update the information stored in the directory. Include operations like                add, modify and delete.

   3. Authentication which is  used to connect and disconnect with a server, create access rights and                preserve information. Include operations like bind, unbind and abandon.

安全模型
In LDAP, the security model relies on the bind operation. Three different bind operations are                possible according to the security mechanisms applied. They are:
  1. 无身份验证

    最简单的方法,只有在数据安全不是问题且没有访问控制权限时才能使用。例如,目录包括可以被任何人浏览的地址簿。如果用户在绑定API调用期间将DN和密码字段留空,则服务器将自动采用匿名用户会话,并授予相应的访问控制。

  2. 基本身份验证

    基本身份验证是LDAP中使用的替代简单安全机制,也适用于其他几种面向Web的协议,如HTTP。在这种方法中,客户端必须通过输入以明文传输的密码和DN来向LDAP服务器进行身份验证。另一方面,服务器将DN和密码与目录中的条目进行比较。如果密码匹配,则授予访问权限。此外,明文格式的密码不能保证机密性,因此可能导致密码泄露给未经授权的人员。

  3. SASL(简单身份验证和安全层)

    该框架已添加到LDAP V3中,为连接导向的协议添加了附加的身份验证方法。该机制指定了一种挑战-响应协议,其中客户端和服务器交换某些数据以确保身份验证并建立后续通信将进行的安全层。使用SASL,LDAP协议可以支持LDAP客户端和LDAP服务器所批准的任何身份验证类型。


2

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接