Aller au contenu
medium

Administrer Keycloak : realms, users, roles

16 min de lecture

Logo Keycloak

Ce guide vous apprend à administrer Keycloak via la console web. Après l’installation Docker (K1-01), vous allez créer un realm, gérer des utilisateurs dans des groupes, assigner des rôles et configurer un client. Ces compétences sont le socle de tous les guides suivants.

À la fin de ce module, vous saurez :

  • Naviguer efficacement dans l’admin console
  • Créer et configurer des realms
  • Gérer les utilisateurs et leurs credentials
  • Organiser les utilisateurs en groupes hiérarchiques
  • Créer et assigner des rôles (realm et client)
  • Configurer un client basique
  • Surveiller les sessions actives et les events

Ouvrez http://localhost:8080 et cliquez sur Administration Console.

Connectez-vous avec les identifiants créés lors de l’installation :

  • Username : admin
  • Password : celui défini dans KEYCLOAK_ADMIN_PASSWORD

La console d’administration se divise en plusieurs zones :

ZoneDescription
Realm selector (en haut à gauche)Bascule entre les realms disponibles
Menu latéralAccès aux différentes sections (Clients, Users, Groups, etc.)
Zone principaleFormulaires de configuration et listes
BreadcrumbNavigation hiérarchique dans la configuration

Un realm est un espace isolé de gestion des identités. Chaque realm possède ses propres :

  • Utilisateurs et groupes
  • Rôles et permissions
  • Clients (applications)
  • Configurations de login
  • Tokens et sessions
RealmUsageUtilisateurs
masterAdministration de Keycloak lui-mêmeSuper-admins uniquement
Realms applicatifsApplications et utilisateurs finauxUtilisateurs de vos apps
  1. Connectez-vous à la console admin
  2. Cliquez sur le realm selector (en haut à gauche, affiche “master”)
  3. Cliquez sur Create realm
  4. Renseignez les informations :
    • Realm name : lab (en minuscules, sans espaces)
    • Enabled : On
  5. Cliquez sur Create

Vous êtes automatiquement basculé sur le nouveau realm.

Après création, configurez les paramètres essentiels dans Realm settings :

ParamètreValeur recommandéeDescription
Display nameLab FormationNom affiché aux utilisateurs
HTML Display name<b>Lab</b> FormationAvec HTML pour le branding
Frontend URL(vide en dev)URL publique en production

Les utilisateurs sont des identités qui peuvent se connecter à vos applications.

  1. Dans le menu, cliquez sur Users
  2. Cliquez sur Add user
  3. Renseignez les informations :
    • Username : alice (obligatoire, unique dans le realm)
    • Email : alice@example.com
    • First name : Alice
    • Last name : Martin
    • Enabled : On
  4. Cliquez sur Create

Un utilisateur créé n’a pas encore de mot de passe.

  1. Après création, allez dans l’onglet Credentials
  2. Cliquez sur Set password
  3. Renseignez le mot de passe deux fois
  4. Temporary :
    • On = l’utilisateur devra le changer à la première connexion
    • Off = mot de passe permanent
  5. Cliquez sur Save

Les attributs permettent de stocker des métadonnées sur l’utilisateur.

Dans l’onglet Attributes, ajoutez des paires clé/valeur :

AttributExempleUsage
departmentEngineeringDépartement de l’entreprise
employee_idEMP-001Identifiant RH
phone+33612345678Numéro de téléphone

Ces attributs peuvent être inclus dans les tokens via les mappers (voir K2-01).

Les required actions forcent l’utilisateur à effectuer une action à la prochaine connexion.

Dans l’onglet Details, section Required User Actions, vous pouvez ajouter :

ActionDescription
UPDATE_PASSWORDChanger le mot de passe
VERIFY_EMAILVérifier l’adresse email
UPDATE_PROFILECompléter le profil
CONFIGURE_TOTPConfigurer le MFA (TOTP)

Les groupes permettent d’organiser les utilisateurs et de leur assigner des attributs et rôles de manière groupée.

Les groupes peuvent être imbriqués. Un utilisateur dans un sous-groupe hérite des attributs et rôles du groupe parent.

Employees/
├── Engineering/
│ ├── Backend/
│ └── Frontend/
├── Marketing/
└── Sales/
  1. Dans le menu, cliquez sur Groups
  2. Cliquez sur Create group
  3. Name : Employees, puis Create
  4. Cliquez sur le groupe Employees
  5. Cliquez sur Create group (crée un sous-groupe)
  6. Name : Engineering, puis Create
  7. Répétez pour Marketing et Sales
  1. Allez dans Users et sélectionnez un utilisateur
  2. Cliquez sur l’onglet Groups
  3. Cliquez sur Join group
  4. Sélectionnez le groupe (ex: Employees/Engineering)
  5. Cliquez sur Join

Les attributs de groupe sont hérités par tous les membres.

  1. Allez dans Groups et sélectionnez un groupe
  2. Cliquez sur l’onglet Attributes
  3. Ajoutez un attribut : department = Engineering
  4. Cliquez sur Save

Tous les membres du groupe auront cet attribut disponible dans leurs tokens (si un mapper est configuré).

Les rôles définissent les permissions des utilisateurs dans les applications.

TypeScopeExempleUsage
Realm rolesGlobal au realmadmin, userPermissions transverses
Client rolesSpécifique à un clientapp:read, app:writePermissions applicatives
Composite rolesCombine d’autres rôlesmanager = user + app:readBundles de permissions
  1. Dans le menu, cliquez sur Realm roles
  2. Cliquez sur Create role
  3. Role name : staff (minuscules, sans espaces)
  4. Description : Employé de l'entreprise
  5. Cliquez sur Save

Créez également les rôles manager et admin.

Un composite role regroupe plusieurs rôles. Utile pour simplifier l’administration.

  1. Créez ou éditez un rôle (ex: manager)
  2. Activez Composite : On
  3. Dans Associated roles, cliquez sur Add roles
  4. Sélectionnez les rôles à inclure (ex: staff)
  5. Cliquez sur Add

Un utilisateur avec le rôle manager aura automatiquement le rôle staff.

  1. Allez dans Users et sélectionnez un utilisateur
  2. Cliquez sur l’onglet Role mapping
  3. Cliquez sur Assign role
  4. Sélectionnez le rôle (ex: staff)
  5. Cliquez sur Assign
  1. Allez dans Groups et sélectionnez un groupe
  2. Cliquez sur l’onglet Role mapping
  3. Cliquez sur Assign role
  4. Sélectionnez le rôle (ex: staff)
  5. Cliquez sur Assign

Tous les membres du groupe héritent automatiquement du rôle.

Les default roles sont automatiquement assignés à tout nouvel utilisateur.

  1. Allez dans Realm settings > User registration
  2. Dans Default roles, cliquez sur Assign role
  3. Sélectionnez les rôles par défaut (ex: default-roles-lab)

Un client représente une application qui s’authentifie auprès de Keycloak.

TypeParamètre Client authenticationUsage
PublicOffSPA, applications mobiles (pas de secret)
ConfidentialOnBackend, API (avec secret client)
  1. Dans le menu, cliquez sur Clients
  2. Cliquez sur Create client
  3. General settings :
    • Client type : OpenID Connect
    • Client ID : my-app
  4. Cliquez sur Next
  5. Capability config :
    • Client authentication : Off (public client)
    • Authorization : Off
    • Standard flow : On
    • Direct access grants : Off (recommandé)
  6. Cliquez sur Next
  7. Login settings :
    • Root URL : http://localhost:3000
    • Valid redirect URIs : http://localhost:3000/*
    • Web origins : http://localhost:3000
  8. Cliquez sur Save

Créez des rôles spécifiques à votre application :

  1. Sélectionnez votre client dans Clients
  2. Allez dans l’onglet Roles
  3. Cliquez sur Create role
  4. Role name : app:admin
  5. Cliquez sur Save

Ces rôles apparaissent dans les tokens si l’utilisateur les possède.

La section Sessions permet de voir qui est connecté et d’invalider les sessions.

  1. Dans le menu, cliquez sur Sessions
  2. Vous voyez la liste des sessions actives avec :
    • Utilisateur
    • IP
    • Début de session
    • Dernière activité

Pour déconnecter un utilisateur :

  1. Dans Sessions, trouvez la session
  2. Cliquez sur l’icône poubelle
  3. Confirmez la déconnexion
  1. Allez dans Users et sélectionnez l’utilisateur
  2. Cliquez sur l’onglet Sessions
  3. Cliquez sur Sign out ou Sign out all sessions

Les events permettent d’auditer les actions dans Keycloak.

TypeExemplesUsage
Login eventsLOGIN, LOGIN_ERROR, LOGOUTAudit des authentifications
Admin eventsCREATE_USER, UPDATE_ROLEAudit des actions admin
  1. Allez dans Realm settings > Events
  2. Onglet User events settings :
    • Save user events : On
    • Expiration : 30 jours
    • Event types : cochez les events à capturer
  3. Onglet Admin events settings :
    • Save admin events : On
    • Include representation : On (stocke le payload)
  4. Cliquez sur Save
  1. Dans le menu, cliquez sur Events
  2. Utilisez les filtres :
    • User events : par type, utilisateur, date
    • Admin events : par opération, ressource
  3. Cliquez sur un event pour voir les détails

L’Account Console est l’interface utilisateur final pour gérer son propre compte.

Accédez-y via : http://localhost:8080/realms/lab/account/

Les utilisateurs peuvent :

  • Voir et modifier leur profil
  • Changer leur mot de passe
  • Gérer leurs sessions actives
  • Configurer le MFA
  • Voir les applications autorisées

Mettez en pratique les concepts avec cet exercice guidé.

Créer un realm complet avec des utilisateurs organisés en groupes et des rôles.

  1. Créer le realm :

    • Nom : lab
    • Configure les sessions : SSO Idle = 30 min, Access Token = 5 min
  2. Créer la hiérarchie de groupes :

    Employees/
    ├── Engineering/
    └── Marketing/
  3. Créer les rôles :

    • Realm roles : staff, manager, admin
    • manager est composite et inclut staff
    • admin est composite et inclut manager
  4. Assigner les rôles aux groupes :

    • Employees → rôle staff
    • Employees/Engineering → aucun rôle supplémentaire (hérite de staff)
  5. Créer les utilisateurs :

    UserEmailGroupeRôle direct
    alicealice@example.comEngineering(hérite staff)
    bobbob@example.comEngineeringmanager
    charliecharlie@example.comMarketing(hérite staff)
  6. Créer un client de test :

    • Client ID : test-app
    • Type : Public (OIDC)
    • Redirect URIs : http://localhost:3000/*
  7. Activer les events :

    • Login events : On
    • Admin events : On
  8. Valider :

    • Connectez-vous à l’Account Console avec alice
    • Vérifiez les events de login dans l’admin
  • Realm lab créé avec sessions configurées
  • Groupes hiérarchiques créés (Employees/Engineering, Employees/Marketing)
  • Rôles staff, manager (composite), admin (composite) créés
  • Rôle staff assigné au groupe Employees
  • Utilisateurs créés dans les bons groupes
  • Client test-app configuré
  • Events de login visibles après connexion utilisateur
ConceptPoint clé
RealmEspace isolé d’identités — un par environnement/application
MasterRéservé aux super-admins, jamais pour les applications
GroupesOrganisent les utilisateurs avec héritage d’attributs et rôles
Realm rolesPermissions globales au realm
Client rolesPermissions spécifiques à une application
Composite rolesRegroupent plusieurs rôles pour simplifier l’admin
SessionsSurveillez et invalidez les connexions actives
EventsAuditez toutes les actions pour la compliance
  1. Vérifiez que le compte est Enabled dans l’admin
  2. Vérifiez que les credentials sont configurés (onglet Credentials)
  3. Vérifiez les events de type LOGIN_ERROR pour le message d’erreur
  1. Vérifiez que le rôle est bien assigné (direct ou via groupe)
  2. Vérifiez les mappers du client (voir K2-01 pour les détails)
  3. Pour les client roles, vérifiez que le scope est inclus

Vérifiez l’URL : http://localhost:8080/realms/{realm-name}/account/

Remplacez {realm-name} par le nom exact de votre realm (ex: lab).

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.