2014-11-06 114 views
3

我试图在Tomcat上使用SPNEGO实现基于浏览器的单点登录。带Tomcat的SPNEGO错误:GSSException:未在GSS-API级别指定失败(机制级别:Checksum失败)

我按照这两个页面的所有指令:

当我访问从Firefox或Chrome hello_spnego.jsp,我被要求输入用户名和密码,然后它完美地显示我的用户名;像魅力一样工作。然而,当我试图与IE浏览器访问它,我得到这个错误:

HTTP Status 500 - GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed) 

type Exception report 

message GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed) 

在试图寻找一个解决方案,我碰到这个页面来了:http://www.oracle.com/technetwork/articles/idm/weblogic-sso-kerberos-1619890.html

我跟着客户端配置说明页面的后半部分。之后,所有三种浏览器(Chrome浏览器,Firefox和IE)都显示相同的错误,但他们都不再要求用户名和密码。

我已验证用于与KDC通话的帐户是否正常工作。另外,我有在web.xml文件中指定的用户名和密码,所以我没有单独的KeyTab文件。

诊断的目的,这里有我的krb5.conf和login.conf的文件的内容:

的krb5.conf

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

[realms] 
    DEVID.LOCAL = { 
     kdc = cdi-prod.devid.local 
     default_domain = DEVID.LOCAL 
} 

[domain_realm] 
    .DEVID.LOCAL = DEVID.LOCAL 

login.conf的

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

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

因为我没有keytab文件,所以在login.conf文件中没有提到它。

此外,由于我使用的是aes256-cts加密,因此我在jdk的jre/lib/security文件夹中添加了必需的JCE策略文件(http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html)。

仅供参考,我使用的是Tomcat 8和JDK 1.8。

我真的很感谢这里发生了什么。如果您需要更多信息,请告诉我。提前致谢!

+0

你解决了你的问题吗? – markus 2015-03-25 15:06:09

回答

0

我有同样的问题,找到答案在this post

...go to the Advanced settings of IE (Internet Options > Advanced tab) and disable the "Enable Integrated Windows Authentication" checkbox, this error goes away, and I am able to see the logged in user's handle on IE as well...

回复你尝试之后在此之前的预言文章后所做的任何更改。

0

的Kerberos SPNEGO校验失败的问题

click

我为我的web应用程序由SPNEGO认证。在开发过程中我遇到了使用密钥表文件的HTTP服务一个用户身份认证的问题:

产生的原因:org.ietf.jgss.GSSException中:未指定的失败在GSS-API级别(级别机制:校验和失败)

我我发现解决方案如何解决问题。我用RHEL 7上的服务器和客户端,并且FreeIPA作为KDC/LDAP服务器:

  1. web应用程序服务器上的打开的/etc/krb5.conf并添加到节[libdefaults]一行

    [libdefaults]

    default_tkt_ enctypes = ARCFOUR-HMAC-MD5

,这是最重要的事情。这条线解决 “校验失败” 的问题

  • 在客户端: 的kinit用户名 密码[email protected]
  • Kerberos中域认证成功后,我们可使用卷曲访问基于Kerberos的网络应用程序:

    卷曲-v -k --negotiate -u:--cacert /etc/ipa/ca.crt https://myservice.com:8090/krb

  • 在火狐,打印有关:在地址栏配置 - >我答应 - >然后找到
  • network.negotiate-auth.delegation-URI的值http://,https://

    network.negotiate-auth.trusted-URI的值.myservice。 com

    0

    我已发布一个类似的问题的答案here

    我的情况不是GSSAPI + HTTP,但我想SPNEGO在幕后使用相同的机制。