当前位置: 首页 > 知识库问答 >
问题:

Spring Security Kerberos+AD,校验和失败

益和雅
2023-03-14

我正在尝试使用Active Directory凭据执行Spring SecurityKerberos,如http://docs.Spring.io/spring-security-kerberos/docs/1.0.1.release/reference/htmlsingle/#samples-sec-server-win-auth中所述。我想说,我已经把大部分东西都放下了(SPN、键控等)。现在我有一个校验和失败。假设我更改了主体名,我会得到一个AES加密错误。

我正在RHEL 6上使用Spring Boot with Oracle Java 1.8+JCE示例,来自https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-win-auth

...

原因: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

由: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
    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
  • /etc/krb5.conf确实有default_tgs_enctypes和default_tkt_enctypes以包括AES256-CTS-HMAC-SHA1-96
  • 默认keytab位置在应用程序和krb5.conf之间匹配
  • 正在windows服务器上生成键选项卡,然后将其复制到RHEL

共有1个答案

东郭宏朗
2023-03-14

我似乎与现有的服务主体映射发生了冲突。一旦我把它清理干净,错误就不再发生了。这个链接帮助我找到了解决方案--https://developer.jboss.org/wiki/configuringjbossnegotiationinanallwindowsdomain?_sscc=t

 类似资料:
  • 我正在尝试用Spring Boot、Ldap和Kerberos实现SSO。其中我得到了不同加密类型的校验和失败的多个错误。 环境详情:- 计算机:Windows 10 下面是安全配置java文件 下面是Windows 10计算机中C:\Windows中的krb5.ini文件的内容:- 我还更新了C:\ProgramFiles\java\jre1.8.0_191\lib\security和C:\Pr

  • 我已经根据https://developer.payumoney.com/redirect/文档实现了 view.py 我有根据payumoney的文档传递的值,我检查了hash和hash_sequence如下所示: hashSequence=KeyTxNIDAmountProductInfoFirstNameEmailUDF1UDF2UDF3UDF4UDF5Salt。 payment.html

  • 问题内容: 是否可以选择表中的整行并获得某种校验和?我正在寻找一种方法,告诉我的代码仅在更改了至少一条记录后才更新数据。从数据更改跟踪的角度来看,这将有助于我减少历史记录表中记录的许多更改。- 谢谢。 问题答案: 您可以结合使用和函数来为该行生成MD5校验和: 如果其中一列是可为空的,请确保将其包装在中,因为null会使结果也为null。 另请注意,这不是100%安全的。如果从一列中删除1个字符并

  • 问题内容: 我正在努力验证Azure AD令牌签名。 当我在下面的“ jwks_uri”字段中查找正确的键描述时 https://login.microsoftonline.com/common/.well-known/openid- configuration 我检查所属密钥数据。 我尝试使用“ n”-模数和“ e”字段生成用于签名验证的公钥,但最终出现错误: 安慰: 我尝试了另一种使用“ x5

  • 我正试图为一个P1 meter消息的CRC16校验和编写一个单元测试(而且很难把它弄对...)。 我所拥有的是: null 来源可以在这里找到 CRC是对数据消息中的前面字符计算的CRC16值(从“/”到“!”,使用多项式:x16+x15+x2+1)。 CRC16不使用异或输入,不使用异或输出,并以最低有效位优先计算。该值表示为4个十六进制字符(MSB优先)。 @马克·阿德勒,我修复了你发现的问题

  • 正如你已经发现的,调试汇编代码非常的困难和容易受到挫折。 我建议你先把你需要优化的小段代码用高级语言写成一个子程序。 然后写个小的测试程序可以充分测试你的这个子程序。 确认测试程序可以测试到所有的分支和边界条件。 当高级语言的子程序可以工作了,你再把它翻译成汇编代码。 现在你可以开始优化了。 每次你做了点修改都应该运行测试程序看看能不能正确工作。 将你所有的版本都标上号并保存起来,这样在发现测试程