0

我已经部署了一个新的 OKD 集群 (3.11),并且我选择了身份提供者LDAPPasswordIdentityProvider

配置如下:

openshift_master_identity_providers=[{'name': 'idm', 'challenge': 'true', 'login': 'true', 'kind': 'LDAPPasswordIdentityProvider', 'attributes': {'id': ['dn'], 'email': ['mail'], 'name': ['cn'], 'preferredUsername': ['uid']}, 'bindDN': 'uid=service,cn=users,cn=accounts,dc=myorg,dc=com', 'bindPassword': 'reallysecurepasswordhere', 'insecure': 'false', 'url': 'ldaps://idm.myorg.com:636/dc=myorg,dc=com?uid??(memberof=cn=openshift,cn=accounts,dc=myorg,dc=com)'}]

我已经用这个 URL 尝试了两种可能性。在我总是得到的日志上:

 I0528 15:23:38.491659       1 ldap.go:122] searching for (&(objectClass=*)(uid=user1))
 E0528 15:23:38.494172       1 login.go:174] Error authenticating "user1" with provider "idm": multiple entries found matching "user1"

我不明白为什么过滤器显示为 (&(objectClass=*)(uid=... 显示为过滤器未正确解析,尽管 URL 如上所述。我还检查了主配置.yaml,它作为我的 ini 文件是正确的。

如果我做 ldapsearch 我得到预期的结果:

$ ldapsearch -x -D "uid=service,cn=users,cn=accounts,dc=myorg,dc=com" -W -H  ldaps://idm.myorg.com -s sub -b "cn=accounts,dc=myorg,dc=com" '(&(uid=user1)(memberof=cn=openshift,cn=groups,cn=accounts,dc=myorg,dc=com))' uid
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <cn=accounts,dc=myorg,dc=com> with scope subtree
# filter: (&(uid=user1)(memberof=cn=openshift,cn=groups,cn=accounts,dc=myorg,dc=com))
# requesting: uid 
#

# user1, users, accounts, myorg.com
dn: uid=user1,cn=users,cn=accounts,dc=myorg,dc=com
uid: user1

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

LDAP 服务器是 FreeIPA。

请帮忙!

4

1 回答 1

1

好的,我找到了问题的解决方案。

我假设......错误地......运行 playbookopenshift-ansible/playbook/openshift-master/config.yml会重新启动 openshift-master API。它没有。

我注意到这一点时,我没有在我有这个设置和运行配置的地方编辑我的 ini 清单,而是直接开始编辑/etc/origin/master/master-config.yaml并使用master-restart api它来重新启动 API。从未运行过几次 URL 更改(实际上许多是不正确的)。Config上传了它们,但是master api没有重新启动,所以新的配置没有到位,我一直在碰壁。

于 2019-05-28T19:29:01.317 回答