tomcat - 领域和域语法

标签 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

此应用程序服务器需要将用户的凭据委托(delegate)给另一个名为“anotherserver.mycompany.com”的服务器这对我和一些用户来说效果很好;但对于其他一些用户组,它不起作用,并且会引发有关特定于该服务器的委托(delegate)的错误:RequireDelegationStrategy.login。 我更改了 krb5 文件中的 domain_realm 条目,我可以通过更改它来使用我自己的凭据重现该问题:

[domain_realm]    
        .mycompany.com = .MYCOMPANY.COM
        mycompany.com = MYCOMPANY.COM

注意我添加了一个“.”到“MYCOMPANY.COM”条目。我可以摆脱“。”然后它恢复正常工作。因此,这让我认为问题必须与该特定条目相关,并且我可能必须为该特定服务器添加一个条目。我如下所示添加了它,但它对任何用户都不起作用。我们都遇到了相同的委托(delegate)错误:

[domain_realm]    
        .mycompany.com = MYCOMPANY.COM
        mycompany.com = MYCOMPANY.COM
        anotherserver.mycompany.com = ANOTHERSERVER.MYCOMPANY.COM

我的问题是,我是否缺少在文件中添加此条目的语法?如果是这样,将这些服务器添加到域 relam 中的正确语法是什么?

最佳答案

请删除 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 中定义的组映射角色中,不在该组中的用户无法授权。

关于tomcat - 领域和域语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48392167/

相关文章:

java - tomcat 5 java.lang.UnsatisfiedLinkError : tomcat\apache-tomcat-5. 5.36\bin\tcnative-1.dll AMD 64 位平台上的 : Can't load IA 32-bit . dll

php - 什么是最好的 : Check the database or just check the session on each page using PHP

java - 在 Linux 上使用来自 Java 程序的 Kerberos 的 Windows 服务身份验证

c# - 在 ASP.Net Core 中应该在哪里存储身份验证 token

java - 没有 JAAS 的 Kerberos 身份验证?

Kerberos:kadmin 无法正常工作

tomcat - JIRA v4 : The Gadget Dashboard bundled plugin is not available. 如何修复?

java - Apache OfBiz 可以与现有版本的 Tomcat 一起安装吗

tomcat - 部署 grails 应用程序时 stacktrace.log 出现问题

javascript - Instagram API : getting users feed from another site