我正在尝试设置tomcat服务器以使用Kerberos身份验证。此服务器是Spotfire应用程序服务器的基础。我这样设置我的krb5.config文件:
[libdefaults]
default_realm = MYCOMPANY.COM
default_keytab_name = mykeytab.keytab
default_tkt_enctypes = aes128-cts rc4-hmac
default_tgs_enctypes = aes128-cts rc4-hmac
forwardable = true
[realms]
MYCOMPANY.COM = {
kdc = myserver03.mycompany.com
kdc = myserver04.mycompany.com
admin_server = myserver03.mycompany.com
default_domain = mycompany.com
}
[domain_realm]
.mycompany.com = MYCOMPANY.COM
mycompany.com = MYCOMPANY.COM
[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true
这个应用程序服务器需要将用户的凭证委托给另一个名为"anotherserver.mycompany.com“的服务器,这对我和一些用户来说很有效;但是对于其他用户组,它就不能工作了,它会触发一个关于特定于该服务器的委托的错误: RequireDelegationStrategy.login。我更改了krb5文件中的domain_realm条目,只需更改以下内容,我就可以使用自己的凭据重现该问题:
[domain_realm]
.mycompany.com = .MYCOMPANY.COM
mycompany.com = MYCOMPANY.COM
请注意,我添加了一个".“添加到"MYCOMPANY.COM“条目。我可以去掉".“它就会恢复正常工作。因此,这使我认为问题必须与该特定条目相关,并且我可能必须为该特定服务器添加一个条目。我添加了它,如下所示,然后它对任何用户都不起作用。我们都得到了相同的委派错误:
[domain_realm]
.mycompany.com = MYCOMPANY.COM
mycompany.com = MYCOMPANY.COM
anotherserver.mycompany.com = ANOTHERSERVER.MYCOMPANY.COM
我的问题是,我是否遗漏了在文件中添加此条目的语法?如果是这样,在域relam中添加这些服务器的正确语法是什么?
发布于 2018-01-23 14:56:42
请删除krb5.conf的domain_realm部分下的anotherserver.mycompany.com = ANOTHERSERVER.MYCOMPANY.COM
行,它不属于那里。该部分仅适用于Kerberos领域名称,而不适用于服务器名称。
根据问题陈述,我认为您的Kerberos委托设置正确。否则,Kerberos身份验证对任何用户都不起作用。
事实上,它对一些用户有效,但并不是所有用户都有效,这告诉我问题出在其他地方。身份验证之后是授权,在您的情况下,是按组进行的。我对Tomcat不是很熟悉,但我相信在Tomcat server.xml或web.xml中,您会找到一个或多个定义的角色,它们可能映射到某个目录服务组名称。我认为可以访问Tomcat web应用程序的用户可能在server.xml或web.xml中定义的角色到组的映射中,而不在该组中的用户会导致授权失败。
https://stackoverflow.com/questions/48392167
复制