使用KeycloakDeployment获取RealmResource

时间:2018-02-19 18:58:51

标签: keycloak keycloak-services

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

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

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

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

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

谢谢。

1 个答案:

答案 0 :(得分: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下适用于我们,不确定其他服务器。