Ruby LDAP

2024 年 8 月 29 日 | 5 分钟阅读

Net::LDAP for Ruby 也被称为 net::ldap。它代表轻量级目录访问协议。这是一个用于访问目录服务器的互联网标准协议。它的基本搜索单元是实体,它对应于一个人或其他特定于域的对象。支持 LDAP 协议的目录通常存储有关许多实体的信息。

Ruby LDAP 原则

LDAP 服务器通常用于访问有关人员的信息,但有时也用于计算机、打印机和其他资源等项目。


Ruby LDAP 专有名称

在 LDAP 服务器中,一个实体由一个名为专有名称的全局唯一文本字符串唯一标识。它就像一个 DNS 主机名,DN 是树节点的“扁平化”文本表示。

如果您知道某人或其他实体的 DN,则可以查询启用了 LDAP 的目录以获取有关该实体的信息。否则,您还可以查看与您提供的一组条件匹配的 DN 列表。


Ruby LDAP 属性

在 LDAP 中,有关实体的信息存储为一组属性。属性是一个与零个或多个值关联的文本字符串。大多数启用了 LDAP 的目录包含范围广泛的标准化属性,并根据标准值约束其值。

属性的一个例子是 sn。它代表“姓氏”。此属性通常用于存储某人的姓氏。大多数目录遵循标准约定,即实体 sn 属性将只有一个值。


Ruby LDAP 树库

就像 DNS 一样,LDAP 假定每个目录服务器都包含对应于全局目录树的特定子树的一组 DN 的权威属性数据。此子树在创建目录服务器时配置到目录服务器中。您无法在大多数服务器中查询,因为它们不允许,除非您指定正确的树库。


Ruby LDAP 版本

Ruby LDAP 版本是 stub,讨论 v2 和 v3。


Ruby LDAP 操作

Ruby LDAP 操作是

  • #bind : #bind 操作为服务器提供用户的身份验证凭据。他们可以提供不同的凭据进行身份验证,但大多数目录只要求用户名和密码。
  • #add : #add 操作指定一个新的 DN 和一组初始属性值。在操作成功的情况下,将具有相应 DN 和属性的新实体添加到目录中。
  • #delete : #delete 操作指定一个实体 DN。在操作成功的情况下,该实体及其所有属性将从目录中删除。
  • #rename : #rename 操作也称为 #modify_rdn。在早期的 LDAP 版本中,更改实体 DN 的唯一方法是删除整个实体并使用不同的 DN 再次添加它。但在版本 3 中引入 #rename 操作后,您可以在不丢弃其属性值的情况下更改 DN。
  • #search : 调用 #search 操作通过指定树库、搜索过滤器和属性值列表来标识目录。多个过滤器可以使用 NOT、AND 和 OR 运算符连接在一起。
  • #modify : #modify 操作指定一个实体 DN 和一个属性操作列表。它用于更改存储在目录中特定实体的属性值。它可以通过添加或删除属性或通过从其值中添加或删除来更改属性。有三种方法可以修改属性值:#add_attribute、#delete_attribute 和 #replace_attreibute。

安装 Net::LDAP

net::LDAP 是一个纯 Ruby 库。它不需要任何外部库。Net::LDAP 的 RubyGems 版本可以从常用来源安装。

要求

Net::LDAP 需要 Ruby 2.0.0 解释器或更高版本。

要安装 Net::LDAP 的 RubyGems 版本,请编写以下命令


使用 Ruby net::LDAP

Net::LDAP 功能从需要该库开始。

如果您已安装 Gem 版本,则您需要以下库。


LDAP 连接的凭据

Net::LDAP 连接是一个两步过程。

第 1 步: 实例化 Net:LDAP 对象

大多数 Net:LDAP 操作从实例化 Net:LDAP 对象开始。构造函数接受指定 LDAP 服务器的地址和端口的参数。

语法

第 1 步: 身份验证(绑定)

在这里我们需要指定用户名和密码,我们将在其余会话中使用它们。

语法

现在我们可以在 bind 方法的块内执行不同的操作,例如搜索、修改或删除,并具有适当的权限。


添加新的 LDAP 条目

以下方法将新条目添加到远程 LDAP 服务器。

第 1 步: 创建 LDAP::Mod 对象

需要将 LDAP::Mod 对象传递给 conn.add 方法才能创建条目。

语法

mod_type : 您可以在此处添加一个或多个选项,例如 LDAP_MOD_ADD、LDAP_MOD_DELETE、LDAP_MOD_REPLACE。

attr : 它是属性的名称。

vals : 它是一个值数组。

第 2 步: 调用 conn.add 方法

创建 LDAP::Mod 对象后,我们需要调用 conn.add 方法。

语法

示例

上面的示例将修改前一个示例中的姓氏。


删除 LDAP 条目

delete 方法将删除一个条目。

语法


在 LDAP 中搜索

有三种不同的模式可以使用 search 方法执行搜索。

  • LDAP_SCORE_BASEM : 它将仅搜索基本模式。
  • LDAP_SCOPE_ONLEVEL : 它将搜索基本模式的所有子项。
  • LDAP_SCOPE_SUBTREE : 它将搜索整个子树,包括基本节点。

示例

在本例中,我们将搜索条目的整个子树。

在 search 的最后一个参数中,您可以指定任何属性。如果传递 nil,则返回所有属性,与关系数据库中的“SELECT∗”相同。


下一个主题Ruby XML