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

Keyclope Kerberos身份验证:机制级别:无效参数(400)-找不到适当类型的密钥以使用HMAC解密AP REP-RC4

危文乐
2023-03-14

我有以下内容

  1. JBoss EAP 7.2.2上的spring web应用程序-Machine CentOs
  2. CentOs上的KeyClope 3.3.4
  3. Active directory

我们在OpenJDK 8上运行

用户使用其Active目录帐户从Windows计算机登录。

Keycloak配置了kerberos使用联合。在CentOs机器上,使用

yum install krb5-user krb5-doc
yum install krb5-pkinit krb5-workstation
yum install krb5-libs krb5-devel
yum install krb5-server krb5-workstation pam_krb5

在keycloak用户联合中,keytab文件路径和其他配置是正确的。这由keycloak日志文件确认。领域:XYZ. COM服务器主体HTTP/principal-name@REALM

键表文件是使用

ktpass.exe /out file.keytab /mapuser user-name@REALM /mapop set /princ HTTP/principal-name@REALM /ptype KRB5_NT_PRINCIPAL /pass XXXXXX /crypto RC4-HMAC-NT

在krb5.conf输入以下内容

default_tgs_enctypes = arcfour-hmac
default_tkt_enctypes = arcfour-hmac
permitted_enctypes = arcfour-hmac

问题是登录时我们得到了异常

Looking for keys for: HTTP/principal-name@REALM
2020-02-24 09:34:06,327 WARN  [org.keycloak.federation.kerberos.impl.SPNEGOAuthenticator] (default task-13) SPNEGO login failed: java.security.PrivilegedActionException: GSSException: Failure unspecified at GSS-API level (Mechanism level: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - RC4 with HMAC)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.keycloak.federation.kerberos.impl.SPNEGOAuthenticator.authenticate(SPNEGOAuthenticator.java:68)
at org.keycloak.storage.ldap.LDAPStorageProvider.authenticate(LDAPStorageProvider.java:677)
at org.keycloak.credential.UserCredentialStoreManager.authenticate(UserCredentialStoreManager.java:296)
at org.keycloak.authentication.authenticators.browser.SpnegoAuthenticator.authenticate(SpnegoAuthenticator.java:89)
at org.keycloak.authentication.DefaultAuthenticationFlow.processFlow(DefaultAuthenticationFlow.java:200)
at org.keycloak.authentication.AuthenticationProcessor.authenticateOnly(AuthenticationProcessor.java:853)
at org.keycloak.authentication.AuthenticationProcessor.authenticate(AuthenticationProcessor.java:722)
at org.keycloak.protocol.AuthorizationEndpointBase.handleBrowserAuthenticationRequest(AuthorizationEndpointBase.java:145)

at ...
Caused by: GSSException: Failure unspecified at GSS-API level (Mechanism level: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - RC4 with HMAC)
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.keycloak.federation.kerberos.impl.SPNEGOAuthenticator.establishContext(SPNEGOAuthenticator.java:169)
at org.keycloak.federation.kerberos.impl.SPNEGOAuthenticator$AcceptSecContext.run(SPNEGOAuthenticator.java:132)
at org.keycloak.federation.kerberos.impl.SPNEGOAuthenticator$AcceptSecContext.run(SPNEGOAuthenticator.java:122)
... 72 more
Caused by: KrbException: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - RC4 with HMAC
at sun.security.krb5.KrbApReq.authenticate(KrbApReq.java:278)
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)
... 81 more

2020-02-24 09:34:06,328 INFO  [stdout] (default task-13)        [Krb5LoginModule]: Entering logout
2020-02-24 09:34:06,328 INFO  [stdout] (default task-13)        [Krb5LoginModule]: logged out Subject

我已经做了很多研究,很遗憾地排除了所有可能的原因。完成了以下测试:klist-k{key-tab文件的路径}-e

结果4 HTTP/principal-name@REALMArcfine-hmac在Active目录中,msDS-KeyVersionNumber=4

kinit HTTP/principal-name@REALMklist-e

结果:... Etype(skey, TKT)arcfine-hmac, es256-cts-hmac-sha1-96

总之,Keycloak能够读取keytab,但无法查找解密密钥。

有人能帮忙吗?

我已经看过这篇文章Kerberos-找不到合适类型的密钥来用HMAC解密AP REP-RC4

以及以下链接:https://bugs.openjdk.java.net/browse/JDK-8193855

和许多其他帖子,但没有成功。

共有1个答案

季稳
2023-03-14

您正在使用以下配置:/crypto RC4-HMAC-NT

我有同样的错误,因为keytab文件是用错误的/crypto配置生成的。

在GSS-API级别未指定故障(机制级别:无效参数(400)
无法找到适当类型的密钥以使用HMAC解密AP-REQ-RC4)

您可以尝试使用ktpass命令生成一个新的keytab文件。

 类似资料:
  • 问题内容: 我正在尝试使用Kerberos / SpNego为Java WebApp设置SSO。我正在使用: Java 1.7u67 org.springframework.security.kerberos 1.0.0.RELEASE 活动目录 Linux上的Tomcat 7 克服了如何在Tomcat /Linux服务器上配置kerberos中描述的问题之后?,我现在遇到以下错误: 但是似乎密钥

  • 我正在尝试在WooCommerce Webhook API和我的节点之间创建一个集成。js后端。然而,我真的不知道应该如何使用这个秘密来验证请求。 机密:一个可选的密钥,用于生成请求正文的HMAC-SHA256哈希,以便接收方可以验证webhook的真实性。 返回以下值: :pU9kXddJPY9MG9i2ZFLNTu3TXZA 85pnwfPqmr0dg0= 签名:PjKImjr9Hk9MmId

  • 我一直在尝试使用AWS Cognito实现无密码身份验证 我关注了这些文章:https://medium.com/digicred/password-less-authentication-in-cognito-cafa016d4db7 https://medium.com/@pjatocheseminario/passwordless-api-using-cognito-and-serverle

  • 我正在尝试对现有API启用Azure密钥库证书。我们已经在Azure Key Vault帐户中拥有秘密和Azure Key Vault证书。下面是配置证书的代码: 在我的本地计算机上,我正确地导入了证书,其中包括下载pfx格式。

  • 问题内容: 我正在使用pysftp编写程序,它想针对验证SSH主机密钥。 终端程序使用PuTTY将其保存到Registry中。 如何调和pysftp和PuTTY之间的区别? 我的代码是: E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py:61: UserWarning: Failed to load HostK

  • 使用PuTTY,终端程序将其保存到注册表。 如何协调pysftp和Putty之间的差异? 我的代码是: