- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了 Kerberos 身份验证问题。我有一个 dockerised REST webapp,它在一个 AWS 主机上运行良好。
我刚刚尝试在新主机上运行它,当我尝试时出现 java.security.GeneralSecurityException: Checksum failed at sun.security.krb5.internal.crypto.dk.ArcFourCrypto.decrypt
调用它。下面是完整的堆栈跟踪。
它使用 Spnego
和 Spring Security
。
我不使用 key 表,我完全依赖于 krb5.conf
配置,如下所示:
[libdefaults]
default_realm = XYZ1.AD.XYZ.COM
[realms]
XYZ1.AD.XYZ.COM = {
kdc = XYZ1XEUDC018.xyz1.ad.xyz.com
default_domain = XYZ1.AD.XYZ.COM
}
[domain_realm]
.xyz1.ad.xyz.com = XYZ1.AD.XYZ.COM
.cd2.xyz.com = XYZ1.AD.XYZ.COM
.ad.xyz.com = XYZ1.AD.XYZ.COM
这是 Krb5LoginModule login.conf
:
spnego-client {
com.sun.security.auth.module.Krb5LoginModule required;
};
spnego-server {
com.sun.security.auth.module.Krb5LoginModule required
storeKey=true
isInitiator=false;
};
我在 SO 上找到了一些线索,例如
Kerberos/Spnego authentication issue after password change
和
java security exception : checksum failed
但都没有阐明这个问题。
我可以使用 kerberos 命令行工具做些什么来检查两台主机之间的问题或差异吗?
堆栈跟踪:
java.security.GeneralSecurityException: Checksum failed
at sun.security.krb5.internal.crypto.dk.ArcFourCrypto.decrypt(ArcFourCrypto.java:408) ~[na:1.8.0_131]
at sun.security.krb5.internal.crypto.ArcFourHmac.decrypt(ArcFourHmac.java:91) ~[na:1.8.0_131]
at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:100) ~[na:1.8.0_131]
at sun.security.krb5.internal.crypto.ArcFourHmacEType.decrypt(ArcFourHmacEType.java:94) ~[na:1.8.0_131]
at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:175) ~[na:1.8.0_131]
at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:281) ~[na:1.8.0_131]
at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:149) ~[na:1.8.0_131]
at sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108) ~[na:1.8.0_131]
at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:829) ~[na:1.8.0_131]
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342) ~[na:1.8.0_131]
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285) ~[na:1.8.0_131]
at sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:906) ~[na:1.8.0_131]
at sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:556) ~[na:1.8.0_131]
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342) ~[na:1.8.0_131]
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285) ~[na:1.8.0_131]
at net.sourceforge.spnego.SpnegoAuthenticator.doSpnegoAuth(SpnegoAuthenticator.java:487) ~[spnego-r9.jar!/:na]
at net.sourceforge.spnego.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java:327) ~[spnego-r9.jar!/:na]
at com.my.app.security.SpnegoAuthenticationFilter.doFilter(SpnegoAuthenticationFilter.java:86) ~[gem-security-1.0.4.jar!/:na]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at com.my.app.util.servlet.DurationLoggingFilter.doFilter(DurationLoggingFilter.java:36) ~[gem-utilities-1.0.6.jar!/:na]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) ~[spring-security-web-4.2.3.RELEASE.jar!/:4.2.3.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:105) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:106) ~[spring-boot-actuator-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) ~[tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.15.jar!/:8.5.15]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
最佳答案
我完全被安全异常和堆栈跟踪引入歧途,寻找外部问题,而实际上问题出在基本的 Kerberos/AD 配置上。
我正在使用的服务帐户不是为新主机设置的。
您可以执行此操作 setspn/Q HTTP/mynewhost.ddd.xyz.com
以查看设置了哪些帐户。
关于java - Kerberos AD Spnego 身份验证在一台机器上失败但在另一台机器上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47809459/
我已经开始配置 kerberos。 谁能解释我们在 krb5.conf 文件中设置的票证生命周期和更新生命周期。 ticket_lifetime = 2d renew_lifetime = 7d 是
kerberos 只加密身份验证过程还是所有客户端通信? 我的印象是它就像 LAN 的 VPN。 以便所有 LAN 通信都被加密。就像所有互联网通信都通过 VPN 加密一样。 问候奥布里 最佳答案 K
我试图弄清楚kerberos身份验证是如何工作的,但我发现的信息总是缺少一些东西,就好像其中的一部分被认为是理所当然的。我大致了解该过程,但缺少一些细节。 获取 TGT: 首先,用户应从 KDC 获取
是否可以进行可选的 kerberos 身份验证? 我想要的是:如果客户端(浏览器)不在域中,它被重定向到用户名/密码网络登录。否则它会做 SPNEGO 做 Kerberos 认证。 有什么解决办法吗?
目前正在寻找使用 AD 的联合服务器。首先想到的是使用 ADFS 来管理跨域和领域的服务请求。也就是说,应用程序必须有权访问特定用例的 Kerberos 票证。 AD FS 是否在任何时候使用 Ker
我们想通过 Polybase 将我们的 SQL Server 2016 Enterprise 与我们的 Kerberized OnPrem Hadoop-Cluster 和 Cloudera 5.14
哪个性能测试工具支持带有 Kerberos 身份验证的网页? 仅仅回退到 NTLM 的工具是不够的。 最佳答案 我做了一些研究,可用工具列表是: Visual Studio 2010 Load tes
据我了解, SPN 是 Windows 服务的身份验证工具。 Kerberos 是一个用户认证服务 SPNEGO-GSSAPI 是第三方 API能够使用这些服务。 SSPI:是发送的中立层从 SPNE
我知道中央身份验证服务(CAS)和Kerberos都可以用于对建立 session 进行身份验证。这两种协议(protocol)至少涉及三方,并且将创建票证授予票证持续时间身份验证,那么CAS之间有哪
是否可以进行可选的 kerberos 身份验证? 我想要的是:如果客户端(浏览器)不在域上,它将被重定向到用户名/密码 Web 登录。否则它将执行 SPNEGO 执行 Kerberos 身份验证。 如
在我的 Kerberos 系统中: 运行 kinit test并输入 passwd ,成功。 通过 kadmin.local -q "xst -k test.keytab test" 生成 key 表
如何从 NIFI 连接到启用 Kerberos 的 Kudu? 我只看到一个处理器可以访问 Kudu - PutKUDU 并且它不支持 Kerberos。我没有在网上看到任何有关使用 Kerberos
我正在处理与数据库的 kerberized 连接。我想我了解kerberization的基础知识。用户请求KDC的“Authentication Server”部分获取TGT(Ticket Grant
情况如下: 我在 Windows 7 上使用 MIT Kerberos 客户端 kfw 4.0.1 执行此操作。我正在通过 OpenVPN 连接到使用 Kerberos 5 保护的 YARN 集群。这
我在我的机器上使用 MIT kerberos 5 对用户进行身份验证。这会将票证授予用户。我想将票的 maxlife 重置超过 24 小时。默认情况下,kerberos 票证的最长生命周期为 24 小
我最近提出了一个问题,涉及我在让 MIT Kerberos 与 Microsoft 的 LSA 凭据缓存良好配合时遇到的一些问题。 有人告诉我,设置注册表项 AllowTGTSessionKey 应该
我确实有一个具有 KERBEROS 安全性的 Hadoop 集群和另一个没有 KERBEROS 的 Hadoop 集群。 我可以将文件从 KERBEROS hadoop 集群复制到非 KERBEROS
这来自 Kerberos 示例应用程序,位于 https://github.com/spring-projects/spring-security-kerberos/tree/master/sprin
我正在尝试在启用 Kerberos 身份验证的安全模式下设置单节点 Hadoop 集群,使用 hadoop-2.4.0和 jdk1.7.0_25 . 为此,我按照文档中的描述创建了 key 表文件。在
最近使用 Kerberos 安装 samba 共享停止工作。在另一台服务器上具有相同挂载选项的相同共享有效。所以我假设我们的 DNS 设置和/或 Active Directory 设置没有任何问题。似
我是一名优秀的程序员,十分优秀!