2016-05-05 78 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

何時調用此過濾器方法? –