Introduction
Dans ce tutoriel, je vais vous expliquer comment limiter l’accès à un client en fonction d’un groupe par exemple.
Dans ce tutoriel, je vais vous expliquer comment utiliser le « plugin » : Keycloak: Restrict user authorization on clients que j’ai intégré à l’image Docker disponible ici : https://git.rdr-it.com/registry/keycloak/container_registry/8
Dans le fonctionnement, on ne va pas réellement limiter l’accès à un client (application) en fonction d’un groupe utilisateur mais en fonction d’un rôle client, mais il est possible d’affecter un groupe au rôle client et le tour est joué.
Présentation de l’environnement
Avant de vous expliquer comment mettre en place cette solution, je vais vous présenter l’environnement.
Pour ce tutoriel, je vais utiliser les client rdr-it.com et learnrdritio :
Le client rdr-it.com sera limité alors que le client learnrdritio sera accessible à tous les utilisateurs du royaume.
Les utilisateurs :
L’utilisateur [email protected] aura accès à rdr-it.com et pas l’utilisateur [email protected]
Ajout du rôle au client dans Keycloak
Pour gérer les accès, il faut ajouter un rôle au client.
Aller sur les détails du client et cliquer sur l’onglet Roles 1.
Cliquer sur le bouton Create role 1.
Nommer le rôle restricted-access 1 et cliquer sur Save 2.
Le rôle est créé.
Ajout du formulaire d’authentification
Pour activer la fonctionnalité, il est nécessaire de créer un formulaire en ajoutant l’option de restriction.
Aller sur Authentification 1 dans le menu de navigation, sur l’onglet Flow 2 cliquer sur le bouton Create flow 3.
Nommer le formulaire 1, sélectionner Basic flow 2 et cliquer sur le bouton Create 3.
On arrive sur la page de création du formulaire, où il va falloir ajouter des execution et des sub-flow.
Voici le formulaire que vous devez avoir :
Passer Restrict user authentification on client à Required 1 puis cliquer sur l’engrenage 2.
Dans le champ alias saisir : restricted-access 1, sélectionner client-role 2 et cliquer sur Save 3.
Le formulaire est pret.
Assigner le formulaire au client
Afin que la restriction fonctionne, il faut assigner le formulaire au client.
Aller sur la page de configuration du client sur l’onglet Advanced 1.
Aller en bas de la page sur Authentification flow overrides, dans le champ Browser Flow, sélectionner le formulaire créé précédemment 1 et cliquer sur Save 2.
A partir de maintenant, si vous essayez d’accès à l’application, vous aurez cette page :
Nous n’avons pas encore autoriser d’accès et donc tous les accès sont interdit !
Assigner un utilisateur ou un groupe au rôle client
Maintenant, pour accorder l’accès à un utilisateur à un groupe, il faut leur ajouter le client-role.
Dans le tutoriel, je vais vous montrer avec un utilisateur mais c’est la même chose avec un groupe, il faut aussi penser avec un groupe à ajouter le ou les utilisateurs à celle-ci.
Aller à la liste des utilisateurs en cliquant sur Users 1, cliquer ensuite sur l’utilisateur 2 doit pouvoir accéder au client.
Aller sur l’onglet Role mapping 1> et cliquer sur Assign role 2.
Filtrer les rôles par clients en sélectionnant Filter by clients 1.
Dans la liste, rechercher le role client restricted-access, sélectionner le 1 et cliquer sur Assign 2.
Le rôle est ajouté à l’utilisateur.
L’utilisateur peut maintenant accéder à l’application.
Dans ce tutoriel, on a vu comment limiter l’accès à une application avec un rôle client dans Keycloak