IAM admin force-revoke les backup codes d'un user cible + kill ses sessions
POST/onboarding/v0/admin/users/:user_id/mfa/backup-codes/revoke
ADR-0019 (sub-projet F.1) — IAM admin endpoint, gated par
@requires_roles(IAM_ADMIN, scope=iam:admin) +
@requires_recent_mfa(SENSITIVE=60s). Force-révoque TOUS
les backup codes actifs (non-consumed, non-revoked) du user
cible en marquant BackupCode.revoked_at=now ET tue toutes
ses AuthSession actives avec
revoked_reason=ADMIN_FORCE_REVOKE_BACKUP_CODES.
Le session-kill est inconditionnel (incident-response Q-f2).
L'asymétrie avec generate_backup_codes côté user (qui ne
tue PAS les sessions, étant un flow de rotation routine) est
justifiée par la différence de threat-model : admin agit sur
incident, user agit sur rotation.
Idempotent : un re-call sur un user sans codes actifs renvoie
200 avec codesRevokedCount=0 mais tue quand même les
sessions (incident-response semantic).
Audit : actor_user_id, target_user_id, request_id,
codes_revoked_count, sessions_revoked_count,
revoked_reason.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 500
Backup codes révoqués + sessions invalidées
Self-target interdit (code=cannot_self_target).
Unauthorized
IAM_ADMIN manquant OU step-up MFA expiré (> 60s).
User cible introuvable (code=user_not_found).
Unexpected error