13.3.7. LDAP 身份验证
在 identityProviders
小节中设置 LDAPPasswordIdentityProvider
,以使用简单的绑定身份验证根据 LDAPv3 服务器验证用户名和密码。
如果您需要 LDAP 服务器故障转移,而不是按照以下步骤,通过 为 LDAP 故障转移配置 SSSD 来扩展基本验证方法。
在身份验证过程中,搜索 LDAP 目录中与提供的用户名匹配的条目。如果找到一个唯一匹配项,则尝试使用该条目的可分辨名称 (DN) 以及提供的密码进行简单绑定。
执行下面这些步骤:
-
通过将配置的
url
中的属性和过滤器与用户提供的用户名组合来生成搜索过滤器。 - 使用生成的过滤器搜索目录。如果搜索返回的不是一个条目,则拒绝访问。
- 尝试使用搜索所获条目的 DN 和用户提供的密码绑定到 LDAP 服务器。
- 如果绑定失败,则拒绝访问。
- 如果绑定成功,则将配置的属性用作身份、电子邮件地址、显示名称和首选用户名来构建一个身份。
配置的 url
是 RFC 2255 URL,指定要使用的 LDAP 主机和搜索参数。URL 的语法是:
ldap://host:port/basedn?attribute?scope?filter
对于以上示例:
URL 组件 | 描述 |
---|---|
|
对于常规 LDAP,使用 |
|
LDAP 服务器的名称和端口。LDAP 默认为 |
| 所有搜索都应从中开始的目录分支的 DN。至少,这必须是目录树的顶端,但也可指定目录中的子树。 |
|
要搜索的属性。虽然 RFC 2255 允许使用逗号分隔属性列表,但无论提供多少个属性,都仅使用第一个属性。如果没有提供任何属性,则默认使用 |
|
搜索的范围。可以是 |
|
有效的 LDAP 搜索过滤器。如果未提供,则默认为 |
在进行搜索时,属性、过滤器和提供的用户名会组合在一起,创建类似如下的搜索过滤器:
(&(<filter>)(<attribute>=<username>))
例如,可考虑如下 URL:
ldap://ldap.example.com/o=Acme?cn?sub?(enabled=true)
当客户端尝试使用用户名 bob
连接时,生成的搜索过滤器将为 (&(enabled=true)(cn=bob))
。
如果 LDAP 目录需要身份验证才能搜索,请指定用于执行条目搜索的 bindDN
和 bindPassword
。
使用 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 用户创建身份和用户对象。