这是链接中描述的一个相关问题,Has anyone configure Kerberos SSO on Web Logic 12.1.2 with JDK 1.7 on Win 2012?.
这个问题解决了吗?我在 jdk 7u79 上的 Windows Server 2012 R2 上运行的 Weblogic 服务器版本 12.1.3.0 上遇到了完全相同的问题。当我从 krb5.ini 文件中删除 aes256-cts-hmac-sha1-96 并使用 ktab 或 ktpass 实用程序生成 keytab 文件时,我在 weblogic 服务器中收到错误消息:
com.bea.security.utils.kerberos.KerberosException: Failure unspecified at GSS-API level (Mechanism level: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - AES256 CTS mode with HMAC SHA1-96) Caused By: KrbException: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - AES256 CTS mode with HMAC SHA1-96
at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:278)
现在,当我将 aes256-cts-hmac-sha1-96 添加回 krb5.ini 文件并生成 keytab 文件时,我在 weblogic 服务器中收到错误消息说
com.bea.security.utils.kerberos.KerberosException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed) Caused By: java.security.GeneralSecurityException: Checksum failed
at sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS(AesDkCrypto.java:451)
我也尝试在weblogic server 12.1.3.0中将jdk版本升级到jdk 8u73,但是报错场景完全一样。
此外,当我尝试在 jdk 8u73 上的 Windows Server 2012 R2 上使用 Weblogic server 12.2.1 时,我总是收到错误消息:
GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos credentails)
at sun.security.jgss.krb5.Krb5AcceptCredential.getInstance(Krb5AcceptCredential.java:87)
at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:127)
at sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:193)
at sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:427)
这里也提到了上述错误https://community.cloudera.com/t5/Storage-Random-Access-HDFS/SPNEGO-authentication-failure-with-openjdk-gt-7u80-HADOOP-10786/td-p/34829 . 所以它可能是所有 jdk7u80+ 的问题。
我已经花了一个多星期的时间来解决这个问题,但仍然没有找到解决办法。