Tomcat无法使用spnego进行身份验证;无法定位默认领域";

Tomcat无法使用spnego进行身份验证;无法定位默认领域";,tomcat,kerberos,spnego,jgss,Tomcat,Kerberos,Spnego,Jgss,我正在使用教程尝试将Tomcat配置为使用spnego Hello_KDC.java工作正常,我能够进行身份验证。如果我使用了错误的密码,就会出现错误异常,所以它可以正常工作 但当我尝试使用Tomcat的教程时,它就崩溃了。Tomcat ROOT/index.jsp变为空白,在监视时,我看到它返回404。log\host-manager.2013-02-22.log包含以下内容: Fev 22, 2013 1:39:03 PM org.apache.catalina.core.StandardC

我正在使用教程尝试将Tomcat配置为使用spnego

Hello_KDC.java工作正常,我能够进行身份验证。如果我使用了错误的密码,就会出现错误异常,所以它可以正常工作

但当我尝试使用Tomcat的教程时,它就崩溃了。Tomcat ROOT/index.jsp变为空白,在监视时,我看到它返回404。log\host-manager.2013-02-22.log包含以下内容:

Fev 22, 2013 1:39:03 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter SpnegoHttpFilter
javax.servlet.ServletException: javax.security.auth.login.LoginException: Cannot locate default realm
    at net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:198)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: javax.security.auth.login.LoginException: Cannot locate default realm
    at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Unknown Source)
    at com.sun.security.auth.module.Krb5LoginModule.login(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at javax.security.auth.login.LoginContext.invoke(Unknown Source)
    at javax.security.auth.login.LoginContext.access$000(Unknown Source)
    at javax.security.auth.login.LoginContext$4.run(Unknown Source)
    at javax.security.auth.login.LoginContext$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)
    at javax.security.auth.login.LoginContext.login(Unknown Source)
    at net.sourceforge.spnego.SpnegoAuthenticator.<init>(SpnegoAuthenticator.java:161)
    at net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:196)
    ... 17 more
Caused by: KrbException: Cannot locate default realm
    at sun.security.krb5.PrincipalName.<init>(Unknown Source)
    ... 32 more
Caused by: KrbException: Cannot locate default realm
    at sun.security.krb5.Config.getDefaultRealm(Unknown Source)
    ... 33 more
Caused by: KrbException: Generic error (description in e-text) (60) - Unable to locate Kerberos realm
    at sun.security.krb5.Config.getRealmFromDNS(Unknown Source)
    ... 34 more
fev220131:39:03 PM org.apache.catalina.core.StandardContext filterStart
严重:启动过滤器SPNEGOHTTPPFILTER时出现异常
javax.servlet.ServletException:javax.security.auth.login.LoginException:找不到默认域
位于net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:198)
位于org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
位于org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
位于org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
位于java.util.concurrent.Executors$RunnableAdapter.call(未知源)
位于java.util.concurrent.FutureTask$Sync.innerRun(未知源)
位于java.util.concurrent.FutureTask.run(未知源)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(未知源)
位于java.lang.Thread.run(未知源)
原因:javax.security.auth.login.LoginException:找不到默认域
位于com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(未知源)
位于com.sun.security.auth.module.Krb5LoginModule.login(未知源)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于javax.security.auth.login.LoginContext.invoke(未知源)
位于javax.security.auth.login.LoginContext.access$000(未知源)
位于javax.security.auth.login.LoginContext$4.run(未知源)
位于javax.security.auth.login.LoginContext$4.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.login.LoginContext.invokePriv(未知源代码)
位于javax.security.auth.login.LoginContext.login(未知源)
位于net.sourceforge.spnego.SpnegoAuthenticator。(SpnegoAuthenticator.java:161)
位于net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:196)
... 还有17个
原因:KrbException:找不到默认域
在sun.security.krb5.PrincipalName.(未知来源)
... 32多
原因:KrbException:找不到默认域
位于sun.security.krb5.Config.getDefaultRealm(未知源)
... 33多
原因:krbeException:一般错误(电子文本中的描述)(60)-无法定位Kerberos领域
位于sun.security.krb5.Config.getRealmFromDNS(未知源)
... 34多
这发生在tomcat启动期间,在从浏览器加载任何页面之前。当我尝试加载页面时,没有添加日志

在krb5.conf中,我尝试了主机名和IP,得到了相同的错误。正在查找krb5.conf和login.conf,因为如果我删除它们,会得到以下日志:

Fev 22, 2013 1:46:05 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter SpnegoHttpFilter
java.lang.SecurityException: login.conf (tal arquivo ou diretório não existe)
    at com.sun.security.auth.login.ConfigFile.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.lang.Class.newInstance0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at javax.security.auth.login.Configuration$3.run(Unknown Source)
    at javax.security.auth.login.Configuration$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.login.Configuration.getConfiguration(Unknown Source)
    at net.sourceforge.spnego.SpnegoFilterConfig.doClientModule(SpnegoFilterConfig.java:176)
    at net.sourceforge.spnego.SpnegoFilterConfig.<init>(SpnegoFilterConfig.java:138)
    at net.sourceforge.spnego.SpnegoFilterConfig.getInstance(SpnegoFilterConfig.java:314)
    at net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:193)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114)
    at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1673)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: login.conf (tal arquivo ou diretório não existe)
    at com.sun.security.auth.login.ConfigFile.init(Unknown Source)
    ... 32 more
fev220131:46:05 PM org.apache.catalina.core.StandardContext filterStart
严重:启动过滤器SPNEGOHTTPPFILTER时出现异常
java.lang.SecurityException:login.conf(tal arquivo ou diretório não existe)
位于com.sun.security.auth.login.ConfigFile。(来源未知)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于java.lang.Class.newInstance0(未知源)
位于java.lang.Class.newInstance(未知源)
位于javax.security.auth.login.Configuration$3.run(未知源)
位于javax.security.auth.login.Configuration$3.run(未知源)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.login.Configuration.getConfiguration(未知源)
位于net.sourceforge.spnego.SpnegoFilterConfig.doClientModule(SpnegoFilterConfig.java:176)
位于net.sourceforge.spnego.SpnegoFilterConfig.(SpnegoFilterConfig.java:138)
位于net.sourceforge.spnego.SpnegoFilterConfig.getInstance(SpnegoFilterConfig.java:314)
位于net.sourceforge.spnego.SpnegoHttpFilter.init(SpnegoHttpFilter.java:193)
位于org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5309)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
在org.apache.catalina.co
[libdefaults]
default_realm = KERBOS.COM
ticket_lifetime = 36000

[realms]
KERBOS.COM = {
kdc = 10.1.2.3
admin_server = INQS28KERB01
default_domain = KERBOS.COM
}

[domain_realm]
.mycompany.com = KERBOS.COM

[appdefaults]
autologin = true
forward = true
forwardable = true
encrypt = true
System.setProperty("sun.security.krb5.debug", "true");
Java config name: null
Native config name: /etc/krb5.conf
Loaded from native config
Java config name: krb5.conf
Loaded from Java config
Java config name: krb5.conf