我有一个使用 spring-security kerberos 扩展的工作应用程序,在 jboss 上运行,运行 java 6。
我正在将 jvm 从 java 6 升级到 java 7。当我这样做时,使用与 java 6 相同的代码库和相同的密钥表,现在在使用 java 7 时收到错误。
我一直收到:
java.security.PrivilegedActionException:GSSException:GSS-API 级别未指定失败
(机制级别:无效参数 (400) -
无法找到适当类型的密钥来使用 HMAC 解密 AP REP - RC4)
我尝试使用其他论坛中描述的不同 /crypto 选项重新生成密钥表,但无济于事。
我已经调试了 java 7 代码,实际上,处理启动时读取密钥表的类从 6 更改为 7。是否我的密钥表不再被正确读入应用程序?我在使用 Java6 启动时看到的一些调试消息在 7 中不再出现,但我无法判断这是设计使然还是表明有其他东西在起作用?还有其他人在从 6 升级到 7 时遇到问题并且他们的 kerberos 集成中断吗?有什么建议吗?
通过 spnego 和 kerberos 调试日志记录启动,我的日志显示:
2012-12-10 10:29:30,886 Debug is true storeKey true useTicketCache false useKeyTab true doNotPrompt true ticketCache is null isInitiator false KeyTab is jndi:/localhost/docfinity/WEB-INF/classes/config/common/security/http-docfinity.keytab refreshKrb5Config is false principal is HTTP/[email protected] /cdn-cgi/l/email-protection tryFirstPass is false useFirstPass is false storePass is false clearPass is false
2012-12-10 10:30:26,322 principal is HTTP/[email protected] /cdn-cgi/l/email-protection
2012-12-10 10:30:29,794 Will use keytab
2012-12-10 10:30:29,807 Ordering keys wrt default_tkt_enctypes list
2012-12-10 10:30:29,821 Config name: C:\Windows\krb5.ini
2012-12-10 10:30:29,827 Using builtin default etypes for default_tkt_enctypes
2012-12-10 10:30:29,832 default etypes for default_tkt_enctypes:
2012-12-10 10:30:29,837 17 aes128-cts-hmac-sha1-96
2012-12-10 10:30:29,839 16 des3-cbc-sha1-kd
2012-12-10 10:30:29,842 23 rc4-hmac
2012-12-10 10:30:29,846 1 des-cbc-crc
2012-12-10 10:30:29,849 3 des-cbc-md5
2012-12-10 10:30:29,851 .
2012-12-10 10:30:29,855 Commit Succeeded
另一个问题 - 您会看到它正在尝试读取 C:\Windows\krb5.ini。我的服务器上没有这样的文件。我需要一个吗?我也没有 java 6 的,但它可以工作。
aaron