具有 LDAP 身份验证的 Cloudera Manager

Cloudera Manager with LDAP authentification

我目前正在尝试配置 LDAP 配置以进入 Cloudera Manager,但我遇到了一些困难。

上下文: LDAP 用户由扩展 Person 的特定对象类定义。 DN 看起来像 myCorporateCode=xxx,cn=users,dc=example,dc=com 并且 Person 对象类给出的 cn 属性被初始化与 myCorporateCode 具有相同的值。 LDAP 用户 "groups" 也由特定的 objectClass 定义,但它不扩展除 top 之外的任何其他 objectClass。它没有任何 cn 属性,DN 看起来像 myFunctionCode=yyy,cn=functions, dc=example,dc=com

LDAP 用户也有一个 DN 属性 userFunctions 来列出用户所属的所有 "functions"(或 "groups")。 而一个 LDAP "group"(或函数)有一个 DN 属性 functionUsers 来列出属于该组(或具有此函数)的所有用户的 DN

示例:

LDAP User
DN:  myCorporateCode=xxx,cn=users,dc=example,dc=com
myCorporateCode: xxx
cn: xxx
userFunctions: myFunctionCode=yyy,cn=functions, dc=example,dc=com

LDAP Function
DN: myFunctionCode=yyy,cn=functions, dc=example,dc=com
myFunctionCode: yyy
functionUsers: myCorporateCode=xxx,cn=users,dc=example,dc=com

当然,无法更改 LDAP 架构。

好吧,当我尝试配置 Cloudera Manager 来管理身份验证和授权时,我的公司 LDAP 抛出错误,因为我无法指定它必须考虑哪个属性,所以我无法完成它。

我认为这就是问题所在,因为 LDAP 日志向我显示了此类日志:

Wed Oct  7 07:45:13 2015 Search: 
connid = D564, base = cn=functions,dc=example,dc=com, 
filter = (myFunctionCode=FBGCLMTEST2*), scope = 2, 
attrs = cn objectClass javaSerializedData javaClassName javaFactory javaCodeBase javaReferenceAddress javaClassNames javaRemoteLocation, 
IP = x.x.x.x, searchFlags = 0

在应用程序中没有结果(使用 ldapsearch 的此类请求可以访问该功能)

我对用户身份验证有相同的行为,但是因为它有一个用 myCorporateCode 值初始化的 cn 属性,所以身份验证有效。

那么,有没有办法告诉 Cloudera Manager 它必须考虑特定属性,而不是像 Hue 那样在其 ldap 搜索中考虑 cn 属性? 顺便说一下,我对 Cloudera Navigator 也有同样的问题...

谢谢!

根据 Cloudera 的说法,没有办法做到这一点:要识别群组 Cloudera Manager 和 Navigator,请使用通用名称。再清楚不过了...

无论如何,Cloudera 给出了一个基于脚本的解决方案,作为 Cloudera Manager/Navigator 和 LDAP/Active 目录之间的网关执行: http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cm_sg_external_auth.html#cmug_topic_13_9_3_unique_1