Identity - Admin

Documentation detaillee des endpoints d'administration du module Identity : gestion des utilisateurs et des sessions.

Identity - Admin

Les endpoints d'administration requierent des permissions specifiques attribuees via le systeme RBAC (Role-Based Access Control). Tous les endpoints admin utilisent le prefixe /api/v1/identity/admin.

Systeme de permissions

Les permissions disponibles pour l'administration sont definies dans Identity.Constants.Permissions :

PermissionDescription
users.activateAutorisation d'activer un compte
users.deactivateAutorisation de desactiver un compte
sessions.view_anyVisualiser les sessions de tout utilisateur
sessions.revoke_anyRevoquer les sessions de tout utilisateur

Gestion des utilisateurs

Activate User

POST /api/v1/identity/admin/users/{userId}/activate

Reactive un compte utilisateur precedemment desactive.

Tag : Admin -- Users

Permission requise : users.activate

Parametres de route

ParametreTypeDescription
userIdGuidIdentifiant de l'utilisateur

Request body

{
  "reason": "Manual review completed"
}
ChampTypeRequisDescription
reasonstringNonRaison de l'activation (enregistree pour l'audit)

Reponses

204 No Content -- Utilisateur active.

403 Forbidden -- Permission users.activate manquante.

404 Not Found -- Utilisateur introuvable.

Effets de bord

  • Un evenement domaine UserActivatedEvent est publie.
  • L'evenement peut declencher des notifications (ex : email de bienvenue).
  • L'action est enregistree dans le journal d'audit.

Deactivate User

POST /api/v1/identity/admin/users/{userId}/deactivate

Desactive un compte utilisateur et revoque immediatement toutes ses sessions.

Tag : Admin -- Users

Permission requise : users.deactivate

Parametres de route

ParametreTypeDescription
userIdGuidIdentifiant de l'utilisateur

Request body

{
  "reason": "Terms of service violation"
}
ChampTypeRequisDescription
reasonstringNonRaison de la desactivation (enregistree pour l'audit)

Reponses

204 No Content -- Utilisateur desactive.

403 Forbidden -- Permission users.deactivate manquante.

404 Not Found -- Utilisateur introuvable.

Effets de bord

  • Toutes les sessions actives de l'utilisateur cible sont immediatement revoquees.
  • Un evenement domaine UserDeactivatedEvent est publie.
  • L'utilisateur ne pourra plus se connecter tant que son compte n'est pas reactive via ActivateUser.
  • Les JWT existants restent valides jusqu'a leur expiration naturelle (15-60 minutes).

Gestion des sessions (Admin)

Admin: Get User Sessions

GET /api/v1/identity/admin/users/{userId}/sessions

Liste toutes les sessions actives d'un utilisateur specifique.

Tag : Admin -- Sessions

Permission requise : sessions.view_any

Rate limiting : Admin sessions policy (50 req/min)

Parametres de route

ParametreTypeDescription
userIdGuidIdentifiant de l'utilisateur

Reponse

200 OK :

[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "deviceType": "Mobile",
    "browser": "Safari",
    "operatingSystem": "iOS",
    "ipAddress": "192.168.1.42",
    "createdAt": "2026-01-15T10:30:00Z",
    "lastActivityAt": "2026-01-15T14:00:00Z",
    "isCurrent": false
  }
]

Differences avec l'endpoint utilisateur

  • Les adresses IP sont affichees non masquees pour les administrateurs.
  • Le champ isCurrent est toujours false (l'admin consulte les sessions d'un autre utilisateur).

Audit

L'acces est enregistre avec l'identite de l'administrateur et son adresse IP.


Admin: Revoke Session

DELETE /api/v1/identity/admin/sessions/{sessionId}

Revoque de force une session specifique, quel que soit l'utilisateur proprietaire.

Tag : Admin -- Sessions

Permission requise : sessions.revoke_any

Rate limiting : Admin sessions policy

Parametres de route

ParametreTypeDescription
sessionIdGuidIdentifiant de la session

Reponses

204 No Content -- Session revoquee (ou n'existait pas, idempotent).

403 Forbidden -- Permission sessions.revoke_any manquante.

Audit

La revocation est enregistree avec l'identite de l'administrateur, l'identite de l'utilisateur cible, et l'adresse IP de l'administrateur.


Admin: Revoke All User Sessions

DELETE /api/v1/identity/admin/users/{userId}/sessions

Revoque de force toutes les sessions actives d'un utilisateur specifique.

Tag : Admin -- Sessions

Permission requise : sessions.revoke_any

Rate limiting : Admin sessions policy

Parametres de route

ParametreTypeDescription
userIdGuidIdentifiant de l'utilisateur

Reponses

204 No Content -- Toutes les sessions revoquees.

403 Forbidden -- Permission sessions.revoke_any manquante.

Cas d'utilisation

Reponse d'urgence : invalider immediatement tous les acces pour un compte compromis ou suspendu. L'utilisateur ne pourra plus utiliser ses refresh tokens.

Les access tokens existants restent valides jusqu'a leur expiration naturelle. Pour un blocage complet, combiner avec POST /api/v1/identity/admin/users/{userId}/deactivate.

Audit

L'action est enregistree avec l'identite de l'administrateur et son adresse IP.


Integration events

Les actions d'administration publient des notifications MediatR pour informer les autres modules :

EvenementDeclencheurDescription
UserActivatedEventActivateUserCompte reactive
UserDeactivatedEventDeactivateUserCompte desactive
AllSessionsRevokedNotificationDeactivateUserToutes les sessions d'un utilisateur revoquees

Ces evenements sont definis dans Identity.Contracts.IntegrationEvents et peuvent etre consommes par d'autres modules via INotificationHandler<T>.