2016-05-05 12 views
1

私は実行中のjava eeアプリケーションを持っており、認証サーバとしてkeycloakを統合したいと思っています。問題があるのはユーザーストレージだけです。私はすべてのユーザーデータをJavaアプリケーションに入れたいと思っています。Keycloakプロバイダとユーザストレージ

問題: ユーザがkeycloakフロントエンドに登録した場合、私のJavaアプリケーションはユーザが登録されていることを知らないので、新しいエンティティを作成することはできません。私はkeycloakがいくつかのカスタムモジュール(https://keycloak.github.io/docs/userguide/keycloak-server/html/providers.html)を読み込むことができることを知っていましたが、例は見つかりませんでした。

ユーザが登録したときにキークローキングが私のJavaアプリケーションを通知する解決策はありますか?

答えて

0

私は同じ問題を抱えており、フィルタを使用して解決しました。プリンシパルが存在する場合、私はちょうどチェックしていない場合、私は自分のアプリケーションのDBに挿入:

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

いくつかのロールを自動的に使用することができます。しかし、私はadmin apiの使用に何の問題も見ません。システムとパフォーマンステストにも必要です – alacambra

+0

このフィルタメソッドはいつ呼び出されますか? –

関連する問題