IAM admin force-untrust un device d'un user cible + kill sa session liée
POST/onboarding/v0/admin/users/:user_id/mfa/devices/:device_id/untrust
ADR-0019 (sub-projet F.1) — IAM admin endpoint, gated par
@requires_roles(IAM_ADMIN, scope=iam:admin) +
@requires_recent_mfa(SENSITIVE=60s). Flip
AuthDevice.trusted=False pour un device appartenant au
user cible et révoque uniquement les AuthSession actives
liées à ce device avec
revoked_reason=ADMIN_FORCE_UNTRUST_DEVICE (targeted kill).
Les autres sessions du user cible restent intactes.
Diverge du self-untrust (sub-projet E) sur 3 points :
- Self-target interdit (400 cannot_self_target).
- Le check d'existence filtre par
user=target_user, pasrequest.user. Un device appartenant à un user tiers renvoie 404device_not_found— JAMAIS leak l'existence cross-user (security invariant inversé d'ADR-0018). revoked_reasondistinct pour la forensique SOC.
Idempotent : re-call sur un device déjà untrusted retourne 200
avec sessionsRevokedCount=0 et device_already_untrusted=true
loggué pour distinguer flip réel vs replay.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 500
Device untrust + session liée invalidée (ou no-op si déjà untrusted)
Self-target interdit (code=cannot_self_target).
Unauthorized
IAM_ADMIN manquant OU step-up MFA expiré (> 60s).
Soit user_id introuvable (code=user_not_found), soit device_id introuvable OU appartient à un user tiers (code=device_not_found). Le 404 est délibéré pour ne jamais leak l'existence cross-user.
Unexpected error