遇到了一个非常烦人的问题,涉及JDK 17升级和新支持的Kerberos认证。
问题:JDK 17 Kerberos不再支持rc4-hmac,因为它被标记为不安全。 INFO: Kerberos 在Kerberos中弃用3DES和RC4 默认情况下已禁用3DES和RC4 Kerberos加密类型。 3DES和RC4都是弱加密算法,不应使用。在RFC 8429中,Kerberos 3DES和RC4加密类型已正式弃用。
需要做的事情:
- 生成具有新支持的加密类型的新keytab文件:
- aes128-cts-hmac-sha1-96或aes128-cts-hmac-sha256-128
- 更新AD(Active Directory)中的服务用户(2个复选框)以支持新的加密类型。
无法解决的错误:
Caused by: sun.security.krb5.KrbException: KDC has no support for encryption type (14)
at java.security.jgss/sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:69)
at java.security.jgss/sun.security.krb5.KrbTgsReq.getReply(KrbTgsReq.java:224)
at java.security.jgss/sun.security.krb5.KrbTgsReq.sendAndGetCreds(KrbTgsReq.java:235)
at java.security.jgss/sun.security.krb5.internal.CredentialsUtil.serviceCredsSingle(CredentialsUtil.java:482)
at java.security.jgss/sun.security.krb5.internal.CredentialsUtil.serviceCreds(CredentialsUtil.java:34
at java.security.jgss/sun.security.krb5.internal.CredentialsUtil.serviceCreds(CredentialsUtil.java:31
at java.security.jgss/sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(CredentialsUtil.java:169)
at java.security.jgss/sun.security.krb5.Credentials.acquireServiceCreds(Credentials.java:493)
at java.security.jgss/sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:700)
... 39 common frames omitted
Caused by: sun.security.krb5.Asn1Exception: Identifier doesn't match expected value (906)
at java.security.jgss/sun.security.krb5.internal.KDCRep.init(KDCRep.java:140)
at java.security.jgss/sun.security.krb5.internal.TGSRep.init(TGSRep.java:65)
at java.security.jgss/sun.security.krb5.internal.TGSRep.<init>(TGSRep.java:60)
at java.security.jgss/sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:54)
... 47 common frames omitted
我们有所遗漏吗?
所有关于管道的内容都已更新,支持新的加密类型+keytab.conf文件。
谢谢!
krb5.conf
文件,还是两者都包括? - Samson Scharfrichter