mug*_*gua 5 java spring kerberos spring-security spring-security-kerberos
我正在尝试使用 Active Directory 凭据执行 Spring Security Kerberos,如http://docs.spring.io/spring-security-kerberos/docs/1.0.1.RELEASE/reference/htmlsingle/#samples-sec-服务器双赢身份验证。我想说我已经解决了大部分问题(SPN、keytabs 等)。现在我有一个校验和失败。假设我更改了我的主体名称,我会收到一个 AES 加密错误。
我在 RHEL 6 上使用 Spring Boot 和来自https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server 的Oracle Java 1.8 + JCE 示例-win-auth
这是我运行 jar 时得到的结果
Debug 为 true storeKey true useTicketCache false useKeyTab true doNotPrompt true ticketCache is null isInitiator false KeyTab is /home/boss/webdev125-3.keytab refreshKrb5Config is false principal is http/webdev@EXAMPLE.ORG tryFirstPass is false useFirstPass is false storePass is false clearPass是假的
主体是 http/webdev@EXAMPLE.ORG 将使用 keytab Commit Succeeded
....
2015-11-25 11:29:09.631 DEBUG 5559 --- [nio-8080-exec-3] .a.KerberosServiceAuthenticationProvider :尝试验证 Kerberos 令牌 2015-11-25 11:29:10.003 警告 --- nio-8080-exec-3] waSpnegoAuthenticationProcessingFilter :协商头无效:
...
org.springframework.security.authentication.BadCredentialsException:在 org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:71) 在 org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator.validateTicket(SunJaasKerberosTicketValidator.java:71) 在 org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator.java:71.在 org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) 进行身份验证(KerberosServiceAuthenticationProvider.java:64)
...
引起:org.ietf.jgss.GSSException:在 GSS-API 级别未指定失败(机制级别:校验和失败)
at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:856)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
at sun.security.jgss.spnego.SpNegoContext.GSS_acceptSecContext(SpNegoContext.java:906)
at sun.security.jgss.spnego.SpNegoContext.acceptSecContext(SpNegoContext.java:556)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:342)
at sun.security.jgss.GSSContextImpl.acceptSecContext(GSSContextImpl.java:285)
at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator$KerberosValidateAction.run(SunJaasKerberosTicketValidator.java:170)
at org.springframework.security.kerberos.authentication.sun.SunJaasKerberosTicketValidator$KerberosValidateAction.run(SunJaasKerberosTicketValidator.java:153)
... 48 common frames omitted
Run Code Online (Sandbox Code Playgroud)
引起:sun.security.krb5.KrbCryptoException:校验和失败
at sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType.decrypt(Aes256CtsHmacSha1EType.java:102)
at sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType.decrypt(Aes256CtsHmacSha1EType.java:94)
at sun.security.krb5.EncryptedData.decrypt(EncryptedData.java:175)
at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:281)
at sun.security.krb5.KrbApReq.<init>(KrbApReq.java:149)
at sun.security.jgss.krb5.InitSecContextToken.<init>(InitSecContextToken.java:108)
at sun.security.jgss.krb5.Krb5Context.acceptSecContext(Krb5Context.java:829)
... 56 common frames omitted
Run Code Online (Sandbox Code Playgroud)
引起:java.security.GeneralSecurityException:校验和失败
at sun.security.krb5.internal.crypto.dk.AesDkCrypto.decryptCTS(AesDkCrypto.java:451)
at sun.security.krb5.internal.crypto.dk.AesDkCrypto.decrypt(AesDkCrypto.java:272)
at sun.security.krb5.internal.crypto.Aes256.decrypt(Aes256.java:76)
at sun.security.krb5.internal.crypto.Aes256CtsHmacSha1EType.decrypt(Aes256CtsHmacSha1EType.java:100)
... 62 common frames omitted
Run Code Online (Sandbox Code Playgroud)
其他一些细节:
我似乎与现有的服务主体映射有冲突。一旦我清理它,错误就停止发生。此链接帮助我找到了解决方案 - https://developer.jboss.org/wiki/ConfiguringJBossNegotiationInAnAllWindowsDomain?_sscc=t
| 归档时间: |
|
| 查看次数: |
10604 次 |
| 最近记录: |