Gel des utilisateurs
Les administrateurs du serveur peuvent geler les utilisateurs via l’API d’administration. Un utilisateur gelé sera temporairement empêché de se connecter au serveur Parsec.
Ce mécanisme permet de bloquer automatiquement les utilisateurs qui ont été supprimés d’un service d’annuaire (comme OpenLDAP ou Active Directory), en attendant que l’administrateur de l’organisation les révoque. Il est exposé sous la forme de routes HTTP qui ne nécessitent qu’un jeton d’administration.
Note
L’opération de gel est effectuée par un administrateur du serveur et est réversible. L’opération de révocation est effectuée par un administrateur de l’organisation et n’est pas réversible ; il s’agit de la suppression définitive des droits de l’utilisateur au sein de l’organisation.
Route HTTP /users
Cette route est disponible sous administration/organisations/<raw_organization_id>/users
et nécessite un jeton d’administration.
Il prend en charge la méthode GET
qui liste les informations relatives à tous les utilisateurs, y compris :
Parsec ID
nom de l’utilisateur
adresse e-mail de l’utilisateur
statut de gel
Voici un exemple utilisant curl
et jq
:
$ curl https://$server/administration/organizations/$organization/users \ -H "Authorization: Bearer $administration_token" | jq
Une requête réussie renvoie un objet JSON avec la structure suivante :
{ "users": [ { "user_name": "Alice", "frozen": true, "user_email": "alice@example.com", "user_id": "940a380aedd44127863d952a66cfce1e" }, { "user_name": "Bob", "frozen": false, "user_email": "bob@example.com", "user_id": "7d04b0df51a74158b35b6386eecdf4e0" } ] }
Route HTTP /users/freeze
Cette route est disponible sous administration/organisations/<raw_organization_id>/users/freeze
et nécessite un jeton d’administration.
Il supporte la méthode POST
qui modifie le statut frozen
pour un utilisateur donné.
Voici un exemple de génération des données de la requête en utilisant jq
:
$ DATA=$(jq -n --arg user_id "$user_id" --argjson frozen true '$ARGS.named') $ echo $DATA { "user_id": "940a380aedd44127863d952a66cfce1e", "frozen": true }
La requête peut également utiliser le champ user_email
au lieu de user_id
pour identifier l’utilisateur de Parsec (voir la section note on user identification ci-dessous pour plus d’informations) :
$ DATA=$(jq -n --arg user_email "$user_email" --argjson frozen true '$ARGS.named') $ echo $DATA { "user_email": "alice@example.com", "frozen": true }
Voici un exemple d’exécution de la requête en utilisant curl
et jq
:
$ curl https://$server/administration/organizations/$organization/users/freeze \ -H "Authorization: Bearer $administration_token" \ --request POST --data $DATA | jq
Une requête réussie renvoie un dictionnaire JSON similaire à celui ci-dessous :
{ "frozen": true, "user_email": "alice@example.com", "user_id": "940a380aedd44127863d952a66cfce1e", "user_name": "Alice" }
Traitement des erreurs HTTP
Les erreurs suivantes peuvent être retournées par les routes /users
et /users/freeze
:
404: Organization not found
avec JSON body{"error": "not_found}
403: Invalid administration token
avec JSON body{"error": "not_allowed"}
400: Wrong request format
avec JSON body{"error": "bad_data"}
L’erreur suivante est retournée par la requête /users/freeze
si l’utilisateur n’existe pas dans l’organisation :
404: User not found
avec JSON body{"error": "user_not_found"}
Note sur l’identification de l’utilisateur
Il existe une différence subtile entre l’utilisation de l’ID utilisateur Parsec ou de l’adresse e-mail pour identifier un utilisateur.
Le user ID identifie de manière unique un utilisateur au sein du serveur Parsec, quelle que soit son organisation. Lorsqu’un utilisateur est révoqué, son ID identifie l’utilisateur révoqué.
L”adresse électronique identifie un utilisateur actif (c’est-à-dire non révoqué) au sein d’une organisation. Lorsqu’un utilisateur est révoqué, son adresse électronique peut être réutilisée pour rejoindre l’organisation.
Cela signifie qu’au fil du temps, une adresse électronique peut être partagée entre plusieurs identifiants d’utilisateurs, qu’ils appartiennent à des organisations différentes ou à la même organisation s’ils ont été révoqués.
Considérons le scénario suivant :
Org 1 |
Org 2 |
---|---|
ID 1 alice@mail.com (révoqué) |
ID 4 bob@mail.com (actif) |
ID 2 bob@mail.com (actif) |
ID 5 alice@mail.com (actif) |
ID 3 alice@mail.com (actif) |
Le statut frozen spécifié dans la requête POST
est toujours associé à un ID d’utilisateur Parsec, même si une adresse e-mail est spécifiée.
En ce qui concerne le scénario précédent, voici quelques requêtes possibles et leurs résultats : - Gel de l’utilisateur avec ID 1 : n’aura aucune conséquence puisque l’utilisateur est déjà révoqué. - Gel de l’utilisateur avec ID 4 : l’utilisateur sera effectivement gelé. Son statut actif est maintenu en cas de déblocage. - Gel de l’utilisateur avec l’email alice@mail.com dans Org 1 : l’utilisateur avec l’ID 3 sera gelé (l’utilisateur avec ID 1 n’est pas pris en compte car déjà révoqué).
Avertissement
Notez que si un utilisateur est révoqué d’une organisation puis réinvité avec la même adresse électronique, son statut gelé antérieur ne sera pas appliqué au nouvel utilisateur.