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