首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JDK 17 (Java 17) +Kerberos身份验证失败

JDK 17 (Java 17) +Kerberos身份验证失败
EN

Stack Overflow用户
提问于 2022-01-19 16:31:55
回答 3查看 3.2K关注 0票数 6

在JDK 17升级和支持的新Kerberos auth中,面临一个非常棘手的问题。

  1. 问题: JDK 17 Kerberos不再支持rc4-hmac,因为它被标记为非安全。信息:Kerberos3DES中的Kerberos不推荐3 3DES和RC4,RC4 Kerberos加密类型现在默认被禁用。3 3DES和RC4都是不应该使用的弱加密算法。Kerberos 3 3DES和RC4加密类型在RFC 8429中被正式否决。
  2. 需要做的是:
  • 使用新支持的加密类型生成新的keytab文件:
  • cts 128-cts-hmac-SHA1-96或cts 128-cts sha256-128
  • 更新AD中的服务用户(活动目录,2个复选框,以支持新的加密类型)。

我们无法避免的错误:

代码语言:javascript
运行
复制
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

我们漏掉了什么吗?

管道上的所有内容都会被更新,以支持新的加密types+ -- keytab.conf文件。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-08-17 07:59:38

解决方案是为MSSQL连接使用gMSA帐户。

JDK 17应用-> JDK17 cts 128-cts sha256-128-keytab->调用具有用户to >通过gMSA帐户解析的MSSQL。

因此MSSQL部分首先不接受新的加密类型。

票数 2
EN

Stack Overflow用户

发布于 2022-06-23 13:53:59

通过将krb5.conf文件中的“allow_weak_crypto”属性设置为“true”,可以保持现有的rc4-hmac行为。

票数 4
EN

Stack Overflow用户

发布于 2022-08-19 15:05:16

我的问题和这里描述的完全一样。查看kerberos身份验证的流程并使用这篇微软文章,我们发现问题出现在server的主要服务帐户(我们正在联系的服务)中。此主体服务帐户没有属性'msDS-SupportedEncryptionTypes‘集,因此默认为RC4加密类型。

对我们来说,修复方法是为主体服务帐户启用“该帐户支持Kerberos 128位加密”和“此帐户支持Kerberos 256位加密”。在某些情况下,还可能需要重置此帐户的密码。

正如microsoft文章中提到的那样,默认情况下,用户首字母缩略符没有为'msDS-SupportedEncryptionTypes‘设置一个值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70774313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档