Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用tomcat的Spnego登录仅适用于没有域名的主机名_Java_Tomcat_Spnego - Fatal编程技术网

Java 使用tomcat的Spnego登录仅适用于没有域名的主机名

Java 使用tomcat的Spnego登录仅适用于没有域名的主机名,java,tomcat,spnego,Java,Tomcat,Spnego,我正在为我的Tomcat 7服务器设置Windows身份验证SSO。我使用的是spnego sourceforge库,经过大量调整后,我成功地使其工作(当然,不是完全工作) 我使用的是keytab设置,当我使用不带任何域后缀的主机名登录到我的测试机器时,SSO工作得非常好。一旦我将域名添加到URL中,就会出现一个请求凭据的登录对话框。如果我输入这些,一切都会像预期的那样再次工作,但事实并非如此。一个线索是krb5.conf文件似乎被完全忽略了 那么,有谁能帮我想一想什么是错误的呢?感觉像是SPN

我正在为我的Tomcat 7服务器设置Windows身份验证SSO。我使用的是
spnego sourceforge库
,经过大量调整后,我成功地使其工作(当然,不是完全工作)

我使用的是keytab设置,当我使用不带任何域后缀的主机名登录到我的测试机器时,SSO工作得非常好。一旦我将域名添加到URL中,就会出现一个请求凭据的登录对话框。如果我输入这些,一切都会像预期的那样再次工作,但事实并非如此。一个线索是krb5.conf文件似乎被完全忽略了

那么,有谁能帮我想一想什么是错误的呢?感觉像是SPN参与了进来,但我已经尝试了很多次,但似乎没有帮助

以下是我认为相关的信息

设置:
-广告服务器是Win 2008
-Tomcat 7正在Win 8上运行
-客户使用Win7(通过IE和Chrome进行测试)
-Spnego库是版本7

web.xml设置。

<filter>
    <filter-name>SpnegoHttpFilter</filter-name>
    <filter-class>net.sourceforge.spnego.SpnegoHttpFilter</filter-class>

    <init-param>
        <param-name>spnego.allow.basic</param-name>
        <param-value>false</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.allow.localhost</param-name>
        <param-value>true</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.allow.unsecure.basic</param-name>
        <param-value>false</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.login.client.module</param-name>
        <param-value>spnego-client</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.krb5.conf</param-name>
        <param-value>${catalina.home}/conf/krb5.conf</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.login.conf</param-name>
        <param-value>${catalina.home}/conf/login.conf</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.preauth.username</param-name>
        <param-value></param-value>
    </init-param>

    <init-param>
        <param-name>spnego.preauth.password</param-name>
        <param-value></param-value>
    </init-param>

    <init-param>
        <param-name>spnego.login.server.module</param-name>
        <param-value>spnego-server</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.allow.delegation</param-name>
        <param-value>false</param-value>
    </init-param>


    <init-param>
        <param-name>spnego.prompt.ntlm</param-name>
        <param-value>false</param-value>
    </init-param>

    <init-param>
        <param-name>spnego.logger.level</param-name>
        <param-value>1</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>SpnegoHttpFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>
krb5.conf

[libdefaults]
   default_realm = TESTDOMAIN.LOCAL
   default_tkt_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
   default_tgs_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
   permitted_enctypes   = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc

   [realms]
   TESTDOMAIN.LOCAL  = {
       kdc = TESTDOMAIN-KDC.testdomain.local 
       default_domain = TESTDOMAIN.LOCAL
   }

[domain_realm]
   .TESTDOMAIN.LOCAL = TESTDOMAIN.LOCAL 
   TESTDOMAIN.LOCAL = TESTDOMAIN.LOCAL
setspn-L testuser的结果

Registered ServicePrincipalNames for CN=Test Server,OU=Users,OU=Testdomain,DC=Testdomain,DC=local:
HTTP/TESTHOST
HTTP/TESTHOST.testdomain.local
ktab-l-k测试结果.keytab

Keytab name: test.keytab
KVNO Principal
---- ---------------------------------
   0 testuser@TESTDOMAIN.LOCAL
   0 testuser@TESTDOMAIN.LOCAL
   0 testuser@TESTDOMAIN.LOCAL
   0 testuser@TESTDOMAIN.LOCAL
   0 testuser@TESTDOMAIN.LOCAL
testhost的DNS设置已设置,因此反向查找指向具有全名的测试主机

ping -a 10.1.1.123
Pinging testhost.testdomain.local [10.1.1.123] with 32 bytes of data:
Reply from 10.1.1.123: bytes=32 time<1ms TTL=128
Reply from 10.1.1.123: bytes=32 time<1ms TTL=128
ping-a 10.1.1.123
Ping testhost.testdomain.local[10.1.1.123]和32字节的数据:
来自10.1.1.123的回复:字节=32个时间相关线程,带有一些对话框。只是为了链接在这里
ping -a 10.1.1.123
Pinging testhost.testdomain.local [10.1.1.123] with 32 bytes of data:
Reply from 10.1.1.123: bytes=32 time<1ms TTL=128
Reply from 10.1.1.123: bytes=32 time<1ms TTL=128