2016-05-05 82 views
1

我有一个正在运行的Java EE应用程序,现在我想集成keycloak作为身份验证服务器。我唯一遇到的麻烦是用户存储。我想在我的Java应用程序中拥有所有的用户数据。Keycloak提供商和用户存储

现在的问题: 如果用户注册在keycloak前端,我的java应用程序不知道用户已经注册,所以我不能创建一个新的实体。我发现keycloak能够加载一些自定义模块(https://keycloak.github.io/docs/userguide/keycloak-server/html/providers.html),但我没有找到任何示例。

有没有解决方案keycloak notifys我的Java应用程序时,用户注册?

回答

0

我有同样的问题,我已经解决它使用过滤器。我只是检查主要存在,如果不是我把它插入我的应用程序数据库:

KeycloakSecurityContext ctx = (KeycloakSecurityContext)request.getAttribute(KeycloakSecurityContext.class.getName()); User userEntity = em.find(User.class, ctx.getToken().getSubject()); if (userEntity == null) { ....create user... } 您还可以使用在Example Event Listener that prints events to System.out所示的事件监听器(keycloak events listener),但对于这个确切使用情况下的解决方案更容易和更快。

+0

我最终做的完全一样。可悲的是我仍然需要使用其他的管理API来更新用户角色。 – perotom

+0

可以自动使用一些角色。但是,我没有看到使用管理API的任何问题。我还需要它来进行系统和性能测试 – alacambra

+0

何时调用此过滤器方法? –