我在Hadoop环境中使用kerberos,我使用keytab文件为不同的用户提供身份验证。现在我有一些用户,我必须给所有人同样的特权
所以我创建了一个用户组并为该活动目录组生成了一个通用密钥表文件,但无法验证密钥表文件。它给出了一个错误,如下所述:
kinit:获取初始凭证时在Kerberos数据库中找不到客户端'xyz@BIGDATA.LOCAL'
现在的问题是,是否有可能在活动目录中使用keytab文件用于组,或者我是否必须使用任何其他方式来实现相同的目标?
答案 0 :(得分:1)
您只需在应用程序服务器上放置一个keytab即可成功执行Kerberos SSO身份验证,而不是多个身份验证。当用户访问启用了Kerberos的服务时,他们会从KDC获取该服务的Kerberos票证。应用程序服务器上的keytab解密该票证的内容,因为keytab内部是用户要访问的应用程序服务器上运行的服务的表示,应用程序服务器的FQDN以及将遵循身份验证的Kerberos域名称尝试,以及KDC中服务主体的加密哈希。由于每个密码都相同,因此身份验证成功。这是一个非常隐含的解释。但是,keytab无法确定用户组成员身份。这部分是授权,因此如果要解析组成员身份,则需要将LDAP授权调用回目录服务器。
我知道这个规则只有一个例外。在同一个仅限Microsoft的Active Directory环境中,Kerberos是主要身份验证方法(默认情况下),不使用keytabs。 Microsoft应用程序服务器可以在没有密钥表的情况下对Kerberos票证进行本机解密,以确定用户是谁并解析用户组信息的相同票证,而无需LDAP回调到目录服务器。解析组信息的Kerberos服务票据称为读取PAC 。但是,在AD环境中,非Microsoft平台无法读取PAC"对于群组成员身份,因为据我所知,微软从未透露过他们是如何做到这一点的。请参阅http://searchwindowsserver.techtarget.com/feature/Advanced-Kerberos-topics-From-authentication-to-authorization。