Hive 中的 Ldap 身份验证用户过滤器:失败

Posted

技术标签:

【中文标题】Hive 中的 Ldap 身份验证用户过滤器:失败【英文标题】:Ldap Authentication User filter in Hive: failing 【发布时间】:2017-12-21 11:14:48 【问题描述】:
I want to implement the restrictions in the LDAP authentication, only want a specific group to have access on hive. Below are the properties I have given in the **hive-site.xml**. But the filter is not working.
Kindly check the following code and help me out with this ?

**Hive Version: Hive 2.1.1
Release label: emr-5.4.0
Hadoop distribution:Amazon 2.7.3**

下面提到的属性我已经尝试在 hive-site.xml 中添加,但它们没有工作并且登录不成功。如果没有这些,我可以使用 ldap 机制登录,因为只提到了 ldap 服务器 url 和 authnetication:LDAP:

    <property>
         <name>hive.server2.authentication.ldap.baseDN</name>
         <value>ou=Root,dc=int,dc=domain,dc=com</value>
    </property>

    <property>
      <name>hive.server2.authentication.ldap.groupBaseDN</name>
      <value>CN=Groups,OU=Root,DC=int,DC=domain,DC=com</value>
    </property>

    <property>
      <name>hive.server2.authentication.ldap.groupFilter</name>
      <value>hadoop-admins</value>
    </property>


<property>
  <name>hive.server2.authentication.ldap.customLDAPQuery</name>
  <value><![CDATA[(&(objectClass=person)(memberOf=CN=hadoop-admins,OU=Groups,OU=Root,Dc=int,DC=domain,DC=com)))]]>
  </value>
</property>

如果您遇到同样的问题,请告诉我。

错误

2017-12-20T10:29:32,414 WARN [HiveServer2-Handler-Pool: Thread-45([])]: conf.HiveConf (HiveConf.java:initialize(3768)) - 名称为 hive 的 HiveConf .server2.authentication.ldap.groupBaseDN 不存在 2017-12-20T10:29:32,493 错误 [HiveServer2-Handler-Pool: Thread-45([])]: transport.TSaslTransport (TSaslTransport.java:open(315)) - SASL 协商失败 javax.security.sasl.SaslException:验证登录时出错

【问题讨论】:

我引用的链接是:link 【参考方案1】:

过滤器之间似乎存在不一致

(memberOf=CN=hadoop-admins,OU=Groups,OU=Root,Dc=int,DC=domain,DC=com)

和 groupeBaseDN

hive.server2.authentication.ldap.groupBaseDN CN=组,OU=根,DC=int,DC=域,DC=com

我相信,如果您更正 groupBaseDN,一切都会正常。

【讨论】:

您好 Ludovic Poitou,感谢您的回复我认为我们不能同时使用这两个属性(customquery 和 groupBaseDN)。当您使用 customLDAPQuery 时,使用 groupBaseDN 不会有任何影响。 CustomQuery 不起作用,因为它没有验证用户。但是,当我通过 LDAP UI 直接将 LDAP 过滤器查询用于 LDAP 服务器时,它会起作用。 GroupBaseDN:我尝试使用它,但我得到的错误是..名为 hive.server2.authentication.ldap.groupBaseDN 的 HiveConf 不存在 我认为您已经阅读了我的 cmets... 您报告的 groupBaseDN 不存在的错误,这可能是正确的,因为您已将其定义为“cn=Groups.. ." 而在有效的查询中,它是 "ou=Groups..."

以上是关于Hive 中的 Ldap 身份验证用户过滤器:失败的主要内容,如果未能解决你的问题,请参考以下文章

Azure 应用服务中的 LDAP 身份验证失败

Ldap 用户授权失败 - 未处理的 Spring 身份验证“访问被拒绝”

针对 ldap 的 Apache2 身份验证因“找不到用户”而失败

Spring boot Ldap 身份验证失败,LDAP 错误代码 49 - 80090308 数据 52e

为啥我的 LDAP 重定向脚本对一个用户失败?

与外部用户的身份验证失败