我有一个分层的应用程序,其中我的浏览器连接到MainApp服务器,并且MainApp服务器将身份验证(和其他服务)重定向到我的BackOffice服务器。一切都是Jboss,BackOffice托管了一个RH-SSO / Keycloak实例。由于网络限制,浏览器无法直接与BackOffice对话,只能与MainApp对话。
我已设置Keycloak以支持LDAP作为提供程序的Kerberos。我已验证keyTab等可与其他应用程序一起使用(而不是通过浏览器)。密钥表仅支持AES256-SHA1加密。
到目前为止,我的方法一直是在MainApp和浏览器之间进行协商,直到获得Kerberos V5令牌为止。然后,我从以下位置读取令牌:
((NegTokenTarg)responseMessage).getResponseToken()
MainApp然后使用direct_grant工作流将身份验证请求发送到BackOffice上的Keycloak。
但是,Keycloak无法解密消息,因为它是128位的:
GSSException: Failure unspecified at GSS-API level (Mechanism level: Invalid argument (400) - Cannot find key of appropriate type to decrypt AP REP - AES128 CTS mode with HMAC SHA1-96)
我也尝试过使用-crypto ALL
创建我的keyTab,但是随后出现另一个错误:
GSSException: Failure unspecified at GSS-API level (Mechanism level: Checksum failed)
我不确定对MainApp中的令牌还需要做什么,以便BackOffice / auth可以对其进行身份验证。