领域和域语法

时间:2018-01-23 00:01:46

标签: tomcat authentication kerberos spnego kerberos-delegation

我正在尝试设置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

我的问题是,我错过了在文件中添加此条目的语法吗?如果是这样,在域关系中添加这些服务器的正确语法是什么?

1 个答案:

答案 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中定义的组映射,该组中的用户不在授权中。