无共享密钥的Keycloak身份验证x.509

时间:2020-02-04 14:24:10

标签: keycloak

我有一个Java Web应用程序,该应用程序使用OIDCKeycloakFilter和自定义ConfigResolver来允许不同的可能的安全设置(无论安装客户希望使用什么设置)。我需要使用Keycloak 4.8.3(RedHat SSO 7.3)。我设法将Web应用程序配置为使用共享密钥作为公用客户端或机密客户端进行身份验证。符合预期。

现在,我尝试在我的应用程序和Keycloak之间配置X.509身份验证。您可以将Keycloak客户端配置为机密客户端,并在“凭据”选项卡下设置X.509证书。

我不确定100%是什么意思。根据Signed JWT和共享机密的其他选项,对我而言,这意味着客户端(Web应用程序)正在使用X.509证书进行自身标识。因此,适配器需要具有客户端密钥库等。

当我查看Keycloak中client的安装选项卡中的JSON输出时,它显示如下:

{
  "realm": "Test_Realm",
  "auth-server-url": "https://keycloak.test/auth",
  "ssl-required": "external",
  "resource": "myclient",
  "credentials": {},
  "confidential-port": 0
}

为此,我在Web应用程序中使用以下命令配置了配置解析器:

  config.setRealm(configVO.getRealm());
  config.setAuthServerUrl(configVO.getAuthServerUrl());
  config.setSslRequired(configVO.getSslRequired().getValue());
  config.setResource(configVO.getResource());
  config.setPublicClient(false);
  config.setClientKeystore(configVO.getClientKeystore());
  config.setClientKeystorePassword(configVO.getClientKeystorePassword());
  config.setClientKeyPassword(configVO.getClientKeyPassword());

但是,当我运行Web应用程序并尝试使用配置(不设置凭据)时,当Keycloak返回Web应用程序后,在Keycloak中成功进行身份验证后,日志和浏览器“ Forbidden”都出现了此错误。

WARN  [org.keycloak.adapters.authentication.ClientIdAndSecretCredentialsProvider] (default task-100) Client 'myclient' doesn't have secret available
ERROR [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-100) failed to turn code into token
ERROR [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-100) status from server: 400
ERROR [org.keycloak.adapters.OAuthRequestAuthenticator] (default task-100)    {"error":"unauthorized_client","error_description":"INVALID_CREDENTIALS: Invalid client credentials"}

适配器似乎回退到ClientIdAndSecretCredentials,并且期望共享的机密。但是Keycloak前端没有显示任何可能的共享机密,也没有显示应具有的“结构”类型(其具有键+值的映射)。我

我也找不到这种“客户端”身份验证的示例。我不确定100%“用户客户端X.509”身份验证是否与此配置不同。我不想安装浏览器X.509用户客户端证书。我只在谈论Keycloak与Web应用程序之间的通信(此处使用客户端命名有点麻烦,因为有多个客户端)。用户仍应使用Keycloak的User + Pass Web前端。

PS:当然,我使用的是在所有站点上配置为信任库的自签名根证书,以及在所有站点上从该根证书签名的证书。

0 个答案:

没有答案
相关问题