13.3.7. LDAP 身份验证


identityProviders 小节中设置 LDAPPasswordIdentityProvider,以使用简单的绑定身份验证根据 LDAPv3 服务器验证用户名和密码。

注意

如果您需要 LDAP 服务器故障转移,而不是按照以下步骤,通过 为 LDAP 故障转移配置 SSSD 来扩展基本验证方法。

在身份验证过程中,搜索 LDAP 目录中与提供的用户名匹配的条目。如果找到一个唯一匹配项,则尝试使用该条目的可分辨名称 (DN) 以及提供的密码进行简单绑定。

执行下面这些步骤:

  1. 通过将配置的 url 中的属性和过滤器与用户提供的用户名组合来生成搜索过滤器。
  2. 使用生成的过滤器搜索目录。如果搜索返回的不是一个条目,则拒绝访问。
  3. 尝试使用搜索所获条目的 DN 和用户提供的密码绑定到 LDAP 服务器。
  4. 如果绑定失败,则拒绝访问。
  5. 如果绑定成功,则将配置的属性用作身份、电子邮件地址、显示名称和首选用户名来构建一个身份。

配置的 url 是 RFC 2255 URL,指定要使用的 LDAP 主机和搜索参数。URL 的语法是:

ldap://host:port/basedn?attribute?scope?filter

对于以上示例:

URL 组件描述

ldap

对于常规 LDAP,使用 ldap 字符串。对于安全 LDAP (LDAPS),改为使用 ldaps

host:port

LDAP 服务器的名称和端口。LDAP 默认为 localhost:389,LDAPS 则默认为 localhost:636

basedn

所有搜索都应从中开始的目录分支的 DN。至少,这必须是目录树的顶端,但也可指定目录中的子树。

attribute

要搜索的属性。虽然 RFC 2255 允许使用逗号分隔属性列表,但无论提供多少个属性,都仅使用第一个属性。如果没有提供任何属性,则默认使用 uid。建议选择一个在您使用的子树中的所有条目间是唯一的属性。

scope

搜索的范围。可以是 onesub。如果未提供范围,则默认使用 sub 范围。

filter

有效的 LDAP 搜索过滤器。如果未提供,则默认为 (objectClass=*)

在进行搜索时,属性、过滤器和提供的用户名会组合在一起,创建类似如下的搜索过滤器:

(&(<filter>)(<attribute>=<username>))

例如,可考虑如下 URL:

ldap://ldap.example.com/o=Acme?cn?sub?(enabled=true)

当客户端尝试使用用户名 bob 连接时,生成的搜索过滤器将为 (&(enabled=true)(cn=bob))

如果 LDAP 目录需要身份验证才能搜索,请指定用于执行条目搜索的 bindDNbindPassword

使用 LDAPPasswordIdentityProvider 的 master 配置

oauthConfig:
  ...
  identityProviders:
  - name: "my_ldap_provider" 1
    challenge: true 2
    login: true 3
    mappingMethod: claim 4
    provider:
      apiVersion: v1
      kind: LDAPPasswordIdentityProvider
      attributes:
        id: 5
        - dn
        email: 6
        - mail
        name: 7
        - cn
        preferredUsername: 8
        - uid
      bindDN: "" 9
      bindPassword: "" 10
      ca: my-ldap-ca-bundle.crt 11
      insecure: false 12
      url: "ldap://ldap.example.com/ou=users,dc=acme,dc=com?uid" 13

1
此提供程序名称作为前缀放在返回的用户 ID 前,以此组成身份名称。
2
true 时,来自非 Web 客户端(如 CLI)的未经身份验证的令牌请求会为此提供程序发送 WWW-Authenticate 质询标头。
3
true 时,来自 Web 客户端(如 Web 控制台)的未经身份验证的令牌请求会重定向到由该供应商支持的登录页面。
4
控制如何在此提供程序的身份和用户对象之间建立映射,如上 所述
5
用作身份的属性列表。使用第一个非空属性。至少需要一个属性。如果列出的属性都没有值,身份验证会失败。
6
用作电子邮件地址的属的列表。使用第一个非空属性。
7
用作显示名称的属性列表。使用第一个非空属性。
8
为此身份置备用户时用作首选用户名的属性列表。使用第一个非空属性。
9
在搜索阶段用来绑定的可选 DN。
10
在搜索阶段用来绑定的可选密码。此值也可在 环境变量、外部文件或加密文件 中提供。
11
用于验证所配置 URL 的服务器证书的证书捆绑包。此文件的内容复制到 /etc/origin/master/<identity_provider_name>_ldap_ca.crt 文件中。身份提供程序名称是 openshift_master_identity_providers 参数的值。如果您没有指定 CA 文本或本地 CA 文件的路径,您必须将 CA 证书放在 /etc/origin/master/ 目录中。如果指定多个身份提供程序,您必须手动将每个供应商的 CA 证书放在 /etc/origin/master/ 目录中。您无法更改此位置。只有在清单文件中设置了 insecure: false 时,才会定义证书捆绑包。
12
true 时,不会对服务器进行 TLS 连接。为 false 时,ldaps:// URL 使用 TLS 进行连接,并且 ldap:// URL 升级到 TLS。
13
RFC 2255 URL,指定要使用的 LDAP 主机和搜索参数,如上所述
注意

要将用户列在 LDAP 集成的白名单中,请使用 lookup 映射方法。在允许从 LDAP 登录前,集群管理员必须为每个 LDAP 用户创建身份和用户对象。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.