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