Gel des utilisateurs
Il est possible pour les administrateurs du serveur de geler des utilisateurs Parsec spécifiques.
Les utilisateurs gelés seront temporairement privés de connexion au serveur Parsec en attendant qu’un administrateur de leur organisation les révoque réellement. Cette opération ne fait donc pas partie du système de révocation Parsec (c’est-à-dire la suppression définitive des droits de l’utilisateur).
Le mécanisme de gel permet de bloquer automatiquement les utilisateurs qui ont été supprimés d’un service d’annuaire (comme OpenLDAP
ou AD
), car il est exposé sous la forme de routes HTTP qui ne nécessitent qu’un jeton d’administration.
Il est également exposé via une interface en ligne de commande (CLI), voir la section sur les commandes CLI.
Route HTTP users
Cette route est disponible via /administration/organizations/<raw_organization_id>/users
et nécessite un jeton d’administration.
Elle ne prend en charge que la méthode GET
qui liste les informations suivantes pour chacun des utilisateurs actifs :
identifiant Parsec
nom d’utilisateur
adresse e-mail de l’utilisateur
statut gelé ou non
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/frozen
Cette route est disponible via /administration/organizations/<raw_organization_id>/users/frozen
et nécessite un jeton d’administration.
Elle ne prend en charge que la méthode POST
qui modifie le statut gelé
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 Parsec (voir les notes sur l’identification des utilisateurs):
$ 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:
{ "frozen": true, "user_email": "alice@example.com", "user_id": "940a380aedd44127863d952a66cfce1e", "user_name": "Alice" }
Notes sur l’identification des utilisateurs
Il existe une différence subtile entre les deux façons d’identifier un utilisateur. À tout moment donné, une adresse e-mail peut être utilisée pour identifier de manière unique un utilisateur non révoqué d’une organisation donnée. En revanche, un identifiant utilisateur Parsec identifie de manière unique n’importe quel utilisateur de toutes les organisations du serveur Parsec, y compris les utilisateurs révoqués. Cela signifie qu’au fil du temps, une adresse e-mail peut identifier différents utilisateurs Parsec avec des identifiants Parsec différents, même au sein de la même organisation.
Le statut gelé configuré par la méthode POST
est spécifiquement associé à l’identifiant utilisateur Parsec, indépendamment de la méthode d’identification utilisée dans le corps de la requête. Cela a la conséquence suivante : si un utilisateur est révoqué, puis qu’un nouvel utilisateur est créé avec la même adresse e-mail, le statut gelé ne sera pas appliqué au nouvel utilisateur.
Gestion des erreurs HTTP
Les erreurs suivantes peuvent être renvoyées par les routes users
et users/freeze
:
Organisation introuvable :
404
avec le corps JSON{"error": "not_found}
Jeton d’administration invalide :
403
avec le corps JSON{"error": "not_allowed"}
Format de requête incorrect :
400
avec le corps JSON{"error": "bad_data"}
Une autre erreur peut également être renvoyée lorsque la requête users/freeze
contient un utilisateur qui n’existe pas dans l’organisation :
Utilisateur introuvable :
404
avec le corps JSON{"error": "user_not_found"}
Commandes CLI list_users
et freeze_user
La commande list_users
liste tous les utilisateurs d’une organisation donnée, y compris leur statut gelé ou non-gelé:
$ parsec core list_users -B "parsec://$server" -T $administration_token $organization • Alice <alice@example.com> - Parsec ID: 67ee640058aa45ca9281717c866baa06 - Status: Not frozen • Bob <bob@example.com> - Parsec ID: 0d22530361484b86b28e5b2c3a089772 - Status: Frozen • David <david@example.com> - Parsec ID: 1f1b81052fa947babdbacd6b147b3622 - Status: Not Frozen
La commande freeze_user
permet de geler un utilisateur d’une organisation donnée :
$ parsec core freeze_user -B "parsec://$server" -T $administration_token $organization $user_id David <david@example.com> - Parsec ID: 1f1b81052fa947babdbacd6b147b3622 - Status: Frozen
Elle peut également être utilisée pour dégeler un utilisateur donné :
$ parsec core freeze_user -B "parsec://$server" -T $administration_token --unfreeze $organization $user_id David <david@example.com> - Parsec ID: 1f1b81052fa947babdbacd6b147b3622 - Status: Not frozen
L’utilisateur $user
fourni peut être soit un identifiant parsec, soit une adresse e-mail. Utilisez l’option --help
pour plus d’informations.