0

我们有一个使用 Tomcat Keycloak 适配器在 Tomcat 上运行的 Spring 服务,并且身份验证工作正常。

我们遇到的问题是我们想使用 keycloak.json 文件中定义的客户端参数来查询 RealmResource。

为了创建 Keycloak 对象并获取领域,我需要 keycloak.json 文件提供的信息(领域、资源、auth-server-url、客户端密码、密钥库/信任库)。我可以使用 KeycloakDeployment 实例从 Keycloak 上下文中获取大部分信息,但客户端机密是私有的,我看不到 SSLContext 或密钥库参数。

有没有办法利用 Keycloak 适配器创建的上下文中的现有对象在管理客户端中使用,或者我是否需要手动读取 keystore.json 来获取客户端密钥和密钥库属性?

我想使用客户端密码而不是 AuthToken,因为登录的用户可能没有权限查询/查看领域数据。

谢谢你。

4

1 回答 1

0

我能够使用以下代码获取 keycloak.json 的内容:

HttpServletRequest req = ((ServletRequestAttributes) RequestContextHolder
    .currentRequestAttributes()).getRequest();
String cfgPath = req.getServletContext().getRealPath(
    "/WEB-INF/keycloak.json");
try (BufferedInputStream bis = new BufferedInputStream(
        new FileInputStream(cfgPath))) {
    adapterConfig = KeycloakDeploymentBuilder
        .loadAdapterConfig(bis);
}

它适用于我们在 Tomcat 8 下,不确定其他服务器。

于 2018-02-23T22:44:33.170 回答