2017-10-19 37 views
0

Nous avons plusieurs applications dans lesquelles nous utilisons une gestion de sécurité et de gestion des utilisateurs personnalisée. Maintenant nous passerions probablement à keycloak car c'est une meilleure solution.Utilisez les utilisateurs de Keycloak dans votre propre application

Dans chaque application, nous utilisons notre modèle d'utilisateur à plusieurs endroits, comme Product (f.e. creator_id = 1) a.s.o. question similaire a été posée ici Keycloak and spring boot rest api - user specific data stragegy

Mes questions sont les suivantes:

Comment puis-je garder nos modèles d'utilisateurs, mais utiliser keycloak pour l'authentification et la gestion des utilisateurs sans migrer nos utilisateurs à keycloak? Et comment synchroniser le processus d'enregistrement des utilisateurs (avec Keycloak)? Un exemple utile serait extrêmement utile.

+1

Jetez un oeil à [ma réponse à cette question] (https://stackoverflow.com/questions/39259607/how-to-integrate-or-make-use-of-keycloak-user-database-in-my -application) et voir si cela fonctionnerait pour vous. Je l'utilise depuis un moment et ça marche bien. – stdunbar

+0

nous y penserons. Je vous remercie. mais l'un des points est d'avoir un état cohérent entre les bases de données. Je ne sais pas si nous devrions continuer avec un fournisseur personnalisé pour la fédération des utilisateurs ou quelque chose comme – x4k3p

Répondre

3

Je propose de mettre en œuvre une coutume utilisateur de stockage SPI (http://www.keycloak.org/docs/latest/server_development/topics/user-storage.html) qui importe les données utilisateur à partir de votre base de données personnalisée dans la base de données sur Keycloak à la volée lors de la connexion en temps de chaque utilisateur. En face de votre application, vous pouvez utiliser l'adaptateur Keycloak approprié et un filtre/intercepteur personnalisé qui convertit le modèle utilisateur spécifique Keycloak (voir org.keycloak.KeycloakPrincipal) en votre propre modèle utilisateur.

Je l'ai fait pour plusieurs clients et cela fonctionne très bien. Avec cette approche, le code des applications protégées n'a généralement pas besoin d'être changé. Pour le processus d'enregistrement de l'utilisateur, il suffit de mettre un lien sur la page de connexion keycloak qui dirige l'utilisateur vers votre implémentation d'enregistrement actuelle. Vous aurez besoin d'un thème de connexion cutom dans Keycloak pour cela. Cependant, vous avez probablement besoin de ce schéma personnalisé de toute façon pour personnaliser la page de connexion Keycloak à votre propre apparence.

+0

merci pour une bonne proposition/exemple. Est-il possible d'enregistrer les utilisateurs via keycloak et ensuite de mettre à jour dans sa propre base de données par SPI personnalisé? – x4k3p

+1

Avec le SPI Storage User, cela n'est pas possible. Vous pouvez uniquement modifier les comptes d'utilisateurs importés à partir d'un stockage d'utilisateur externe et synchroniser ces modifications. Il y a le __User SPI__ qui vous permet de remplacer tout le UserProvider interne. Mais je ne recommanderais pas de remplacer cela avec une implémentation personnalisée. Il n'est pas documenté et semble être privé (il réside dans le composant keycloak-server-spi-private). – Boomer

+0

ok, merci. donc une autre façon est de créer l'utilisateur "après la connexion réussie"? c'est-à-dire s'il y a un nouvel utilisateur qui est capable de se connecter avec keycloak mais n'est pas dans le stockage local (application), l'utilisateur sera créé? – x4k3p