我正在尝试设置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
我的问题是,我错过了在文件中添加此条目的语法吗?如果是这样,在域关系中添加这些服务器的正确语法是什么?
答案 0 :(得分:0)
请删除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中定义的组映射,该组中的用户不在授权中。