Skip to Content

Gestion des Utilisateurs

Auris fournit un système complet pour la gestion du cycle de vie des utilisateurs accessible via la Console Admin et les API REST. Les administrateurs peuvent lister, créer, mettre à jour, désactiver, supprimer temporairement et restaurer les utilisateurs sans toucher à l’interface admin native de Keycloak.


Liste des Utilisateurs

La liste des utilisateurs supporte la pagination, la recherche plein texte, le filtrage par rôle et par statut. Les résultats sont retournés dans l’enveloppe de pagination standard d’Auris.

GET/api/usersRequires: manage:users

Retourne une liste paginée d’utilisateurs pour le tenant courant. Supporte les paramètres query : page, limit, search (correspond à email, username, firstName, lastName), role (filtre par nom de rôle), status (active | disabled | deleted).

Structure de la réponse :

{ "data": [ { "id": "usr_01HX...", "email": "[email protected]", "username": "alice", "firstName": "Alice", "lastName": "Martin", "enabled": true, "roles": ["member"], "createdAt": "2025-03-01T10:00:00Z", "lastLogin": "2025-06-10T08:45:00Z", "metadata": {} } ], "pagination": { "page": 1, "limit": 20, "total": 142, "totalPages": 8 } }

Guide Console : Va dans Console Admin → Utilisateurs. Le tableau se met à jour automatiquement quand tu modifies le terme de recherche ou appliques des filtres. Clique sur une ligne pour ouvrir le panneau de détail utilisateur.


Création des Utilisateurs

Les utilisateurs peuvent être créés directement avec un mot de passe, ou sans mot de passe pour activer un e-mail d’invitation demandant à l’utilisateur de définir ses propres identifiants.

POST/api/usersRequires: manage:users

Crée un nouvel utilisateur à la fois dans la base de données d’Auris et dans le realm Keycloak sous-jacent.

Corps de la requête :

{ "email": "[email protected]", "username": "marie", "firstName": "Marie", "lastName": "Dupont", "password": "MotDePasseSécurisé123!", "sendInvite": false, "roles": ["member"], "metadata": { "department": "engineering", "employeeId": "EMP-4421" } }

Référence des champs :

ChampTypeObligatoireNotes
emailstringOuiDoit être unique dans le tenant
usernamestringNonPar défaut la partie locale de l’adresse e-mail
firstNamestringNon
lastNamestringNon
passwordstringNonOmettre pour envoyer une invitation à la place
sendInvitebooleanNonEnvoie un e-mail de configuration quand password est omis
rolesstring[]NonTableau de noms de rôles à assigner à la création
metadataobjectNonJSON arbitraire stocké dans l’enregistrement utilisateur

Si password et sendInvite: true sont tous deux fournis, le mot de passe est défini et aucun e-mail d’invitation n’est envoyé. Définis sendInvite: true sans password pour demander à l’utilisateur de définir ses propres identifiants à la première connexion.

Guide Console : Clique le bouton “Nouvel Utilisateur” dans la page Utilisateurs. Le dialogue présente un formulaire à onglets : Général (nom, e-mail), Identifiants (mot de passe ou toggle invitation) et Rôles (sélection multiple).


Mise à Jour des Utilisateurs

PATCH/api/users/[id]Requires: manage:users

Met à jour partiellement un enregistrement utilisateur. Seuls les champs inclus dans le corps de la requête sont modifiés.

Champs modifiables :

{ "firstName": "Marie", "lastName": "Leblanc", "enabled": true, "roles": ["member", "billing-admin"], "metadata": { "department": "leadership" } }

La mise à jour de roles remplace complètement l’ensemble de rôles de l’utilisateur — inclus tous les rôles souhaités, pas seulement ceux à ajouter. Pour ajouter un seul rôle sans affecter les autres, lis d’abord la liste des rôles courants, ajoute le nouveau rôle, puis envoie l’ensemble complet.

La mise à jour de enabled: false désactive immédiatement l’utilisateur dans Keycloak, invalidant toutes les sessions actives.


Suppression Temporaire et Restauration

Auris utilise la suppression temporaire (soft delete) pour préserver les traces d’audit. La suppression d’un utilisateur marque l’enregistrement avec deletedAt au lieu de le supprimer de la base de données ou de Keycloak.

DELETE/api/users/[id]Requires: manage:users

Supprime temporairement l’utilisateur en définissant deletedAt. L’utilisateur est immédiatement désactivé dans Keycloak et ne peut plus se connecter.

Restauration d’un utilisateur :

POST/api/users/[id]/restoreRequires: manage:users

Efface deletedAt et réactive l’utilisateur dans Keycloak.

Guide Console : La page Utilisateurs a un onglet filtre “Supprimés” qui affiche les utilisateurs supprimés temporairement. Chaque ligne d’utilisateur supprimé a une action “Restaurer” dans le menu déroulant.

La suppression définitive (suppression permanente de toutes les données utilisateur incluant les logs d’audit) est une opération séparée disponible uniquement aux propriétaires du tenant via Console → Paramètres → Zone Dangereuse. La suppression définitive satisfait les exigences de suppression du RGPD.


Sessions Utilisateur

Auris trace les sessions Keycloak actives par utilisateur. Les administrateurs peuvent voir les détails des sessions et révoquer des sessions individuelles pour forcer la ré-authentification — utile quand l’appareil d’un utilisateur est perdu ou compromis.

GET/api/users/[id]/sessionsRequires: manage:users

Retourne la liste des sessions actives pour l’utilisateur, incluant les informations sur l’appareil, l’adresse IP et le timestamp de la dernière activité.

DELETE/api/users/[id]/sessions/[sessionId]Requires: manage:users

Révoque une seule session. L’utilisateur est déconnecté à la prochaine utilisation du token.

DELETE/api/users/[id]/sessionsRequires: manage:users

Révoque toutes les sessions actives de l’utilisateur.

Guide Console : Ouvre un panneau de détail utilisateur et sélectionne l’onglet “Sessions”. Chaque session affiche navigateur/OS, adresse IP, heure de connexion et un bouton “Révoquer”.


Métadonnées Utilisateur

Les métadonnées permettent de stocker des données JSON arbitraires sur un utilisateur sans modifier le schéma d’Auris. Elles sont retournées sur chaque objet utilisateur et accessibles dans le SDK de Management.

Cas d’usage courants :

  • Préférences spécifiques à l’application (theme, language, timezone)
  • Identifiants internes (employeeId, costCenter, managerId)
  • Feature flags ou données d’autorisation
  • Suivi de la progression d’onboarding

Les métadonnées sont stockées comme objet JSON plat ou imbriqué. Il n’y a pas de schéma imposé — la structure est entièrement définie par l’application.

{ "metadata": { "department": "engineering", "employeeId": "EMP-4421", "onboarding": { "completed": true, "completedAt": "2025-04-15T09:00:00Z" } } }

Les métadonnées ne sont pas incluses dans le JWT par défaut. Pour injecter des valeurs de métadonnées dans les tokens, configure les Custom JWT Claims dans Console → Applications → [App] → Custom Claims.


SDK de Management

Utilise le SDK de Management pour l’administration des utilisateurs côté serveur. Le SDK de Management s’authentifie via des credentials client M2M — il n’est pas destiné à une utilisation dans le code navigateur.

import { AurisClient } from '@auris/js' const auris = new AurisClient({ domain: 'https://auth.votreapp.com', clientId: process.env.AURIS_CLIENT_ID, clientSecret: process.env.AURIS_CLIENT_SECRET, }) // Crée un management client authentifié avec des credentials M2M const mgmt = auris.createManagementClient({ clientId: process.env.AURIS_MGMT_CLIENT_ID, clientSecret: process.env.AURIS_MGMT_CLIENT_SECRET, }) // Liste les utilisateurs avec pagination const result = await mgmt.users.list({ page: 1, limit: 20 }) console.log(result.data) // User[] console.log(result.pagination) // { page, limit, total, totalPages } // Obtient un utilisateur spécifique const user = await mgmt.users.get('usr_01HX...') // Crée un utilisateur const newUser = await mgmt.users.create({ email: '[email protected]', firstName: 'Claire', roles: ['member'], sendInvite: true, }) // Met à jour un utilisateur await mgmt.users.update('usr_01HX...', { metadata: { department: 'product' }, }) // Désactive un utilisateur await mgmt.users.update('usr_01HX...', { enabled: false }) // Supprime temporairement un utilisateur await mgmt.users.delete('usr_01HX...')

Permissions Requises

OpérationPermission
Liste des utilisateursmanage:users
Créer un utilisateurmanage:users
Mettre à jour un utilisateurmanage:users
Supprimer / restaurer un utilisateurmanage:users
Voir les sessionsmanage:users
Révoquer les sessionsmanage:users

Pages Associées