tomcat 中的 SPNEGO 总是提示输入密码

SPNEGO in tomcat always prompting password

我的 SPNEGO 配置似乎不起作用,并且在我的 tomcat8 中总是提示输入密码。

Installation/Configuration SPNEGO install guide

我将库 spnego-r9.jar 添加到“tomcat\lib”文件夹。 还添加了 .conf 文件。 这里是 krb5.conf:

[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
default_ccache_name = KEYRING:persistent:%{uid}
udp_preference_limit = 1
default_realm=EXAMPLE.COM
default_tkt_enctypes = aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc aes256-cts- 
hmac-sha1-96 rc4-hmac
default_tgs_enctypes = aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc aes256-cts- 
hmac-sha1-96 rc4-hmac
permitted_enctypes =  aes256-cts aes128-cts des3-cbc-sha1 des-cbc-md5 des-cbc-crc aes256-cts- 
hmac-sha1-96 rc4-hmac

[realms]
EXAMPLE.COM = {
    default_domain=example.com
    kdc=dc2.example.com:88
}

[domain_realm]
.example.com=EXAMPLE.COM
example.com=EXAMPLE.COM

然后将 SpnegoHttpFilter 添加到 web.xml。 最后但同样重要的是,我联系了我们的管理员并将以下内容添加到在 SpnegoHttpFilter

中注册的用户
setspn.exe -A HTTP/ourserver01.example.com/projectXY exampleUser
setspn.exe -A HTTP/ourserver01/projectXY exampleUser

结果是密码提示,即使我的访问用户登录到 EXAMPLE.COM 域。据我所知,这不应该发生。我登录到我们的服务器,发现它的域是一个工作组(使用 wmic 计算机系统在 cmd 中获取域)这可能是个问题,我该如何解决这个问题?

编辑: 这里是第二个 .conf 文件:

spnego-client {
    com.sun.security.auth.module.Krb5LoginModule required;
};

spnego-server {
    com.sun.security.auth.module.Krb5LoginModule required
    storeKey=true
    isInitiator=false;
};

我通过 wireshark 检查了包,发现了 unknown pricipalname 错误。 感谢提示@Samson Scharfrichter

正确的 spn 注册是 setspn.exe -A HTTP/ourserver01.example.com 没有项目本身的 exampleUser。