-1

我正在为 IBM 业务合作伙伴工作,并且正在尝试完成第一个 PoC ICP 安装。基本安装已经成功。我在部署期间没有配置 LDAP,但我现在尝试在控制台中添加 LDAP 连接。

不幸的是,我总是失败。在 ICP 的 LDAP 连接中似乎存在许多限制和/或错误,以至于无法使用。

首先,我想连接到一个 IBM Domino Directory 作为我的 LDAP 服务器。以前使用过 Domino 目录的任何人都知道,许多 Domino 部署都有一个 O=Org 后缀,其中 Org 是包含空格的公司名称。例如,在我们的例子中是“O=ARS GmbH”。我通常需要将其用作基本 DN(搜索库)。但是,ICP 不允许在此字段中使用空格……需要修复!多年来,我尝试连接到我们的 Domino 目录的任何其他 LDAP 客户端产品都能够处理基本 DN 中的空格。

接下来,在 Domino 目录中,组通常具有与用户不同的后缀(例如搜索库)。但 ICP 仅提供一个基本 DN 字段,而不为用户和组提供单独的基本 DN 字段。任何其他 LDAP 客户端……都提供这个。这也需要在 ICP 中修复。

其次,绑定 DN 字段不允许一些常用的特殊字符,这些字符经常出现在帐户名称中,例如 - 字符。这也需要修复(碰巧,我们在用于 LDAP 绑定的 Domino 目录中拥有的特殊用户 ID 名为 dir-client ...)。

好吧,在遇到所有这些阻塞问题之后,我终于尝试连接到我们的 Microsoft Active Directory。这次我可以成功完成 LDAP 连接。这样做之后,我转向“用户”并发现我需要“导入组”。但是,无论我尝试在 CN 和 OU 字段中输入(正确的)值,我最终都只会出现“内部服务器错误”。

此外,在我可以将 LDAP 连接保存到 Active Directory 后,我无法再使用内置管理员帐户登录控制台!但由于我无法导入任何用户/组,我无法将该角色分配给 LDAP 帐户……幸运的是,我有一个主服务器的 VM 快照,因此可以恢复到之前的状态。

这真是令人沮丧...

4

1 回答 1

1

在连接到在 docker 容器中运行的 openldap 服务器时,我遇到了同样的问题。我花了一段时间才弄清楚日志文件所在的 ICP pod 和容器,以获得比“内部服务器错误”更多的信息。

以下是查找相关 ICP pod/container 日志的方法:在 kube-system 命名空间中查找“auth-idp”pod。我用:

kubectl get pods --namespace=kube-system | grep auth-idp

如果您正在运行 HA 集群,则每个主节点上都会有一个 pod。就我而言,我有 3 个主节点。如果您只运行一个 master,那么您将只有一个 auth-idp pod。同样,在 HA 场景中,您需要确定哪个是您当前的主节点。(最简单粗暴的方法是通过 ssh 连接到您的主 VIP 并查看您登陆的节点。)

现在找出当前主节点上正在运行的 pod。在我使用的每个 pod 上:

kubectl describe pod auth-idp-vq5bl --namespace=kube-system | grep IP

或者

kubectl get pod auth-idp-vq5bl --namespace=kube-system -o wide

IP 上的当前主节点是感兴趣的日志所在的位置。

具有感兴趣日志的 pod 中的容器是:platform-identity-mgmt

要实际查看日志文件,请使用:

kubectl logs auth-idp-vq5bl --namespace=kube-system --container=platform-identity-mgmt

此时,您将能够滚动浏览日志并查看更详细的错误消息。

在我的错误的情况下,日志表明我对该组的搜索过滤器无法正常工作。我决定弄乱用户 ID 映射和用户过滤器,所以我使用了用户 ID 映射*:cn和用户过滤器:(&(cn=%v)(objectclass=inetOrgPerson)) 一旦我在 ICP LDAP 配置中更改了这些,用户导入成功。但是,后来我意识到登录不起作用,因为登录是基于对useridor的搜索uid。所以我将用户 ID 映射改回,*:uid用户过滤器改回(&(uid=%v)(objectClass=inetOrgPerson)). 这更正了登录问题。我将一些用户添加到我的 LDAP 组并重新导入了该组,并且导入也正常工作。在这一点上,我不确定原始导入发生了什么,直到我弄乱了用户 ID 映射和用户过滤器。去搞清楚。

在我的 OpenLDAP 目录实例中,我的组都在 ou=groups 下,并且每个组成员都被列为例如 cn=Peter Van Sickel,dc=ibm,dc=com。我必须编辑组成员才能使用实际用户的完整 DN 来获取它。

我的用户都直接在根 DN 下:dc=ibm,dc=com。

至于其他 LDAP 的具体问题,根据我的经验,每个 LDAP 都有自己的一套特性来让事情按需要工作。

于 2018-01-30T20:23:18.043 回答