Connecter des utilisateurs de test avec keenauth test login

keenauth test login connecte un utilisateur de test à un environnement development et affiche les jetons, afin que vous puissiez appeler votre API ou tester votre backend sans passer par la page de connexion. Elle passe par la véritable connexion hébergée, de la même manière qu'un navigateur, et utilise le code fixe de développement 424242 (voir Utilisateurs et messages de test dans les environnements hors production).

La commande n'exige ni clé d'API ni session keenauth login : c'est l'utilisateur de test qui se connecte, et non vous.

Avant de commencer

Utilisation

export KEENAUTH_ISSUER=https://acme-dev.keenauth.app
keenauth test login --user ada+test@example.com --client-id app_01j9z3k4m5n6p7q8r9s0t1v2w3
Option Description
--user Adresse e-mail de l'utilisateur de test (obligatoire).
--client-id Identifiant d'une application publique de l'environnement (obligatoire).
--issuer URL de l'émetteur de l'environnement. Par défaut : la variable d'environnement KEENAUTH_ISSUER.
--scope Périmètres demandés, séparés par des espaces. Par défaut : openid profile email. Ajoutez offline_access pour recevoir un jeton de rafraîchissement.
--resource Indicateur de ressource de l'API à laquelle le jeton d'accès est destiné (RFC 8707).
--redirect-uri Une URI de redirection enregistrée pour l'application.
--output, -o json, yaml ou table. Sans cette option, la CLI affiche un tableau dans un terminal et du JSON sinon.

La sortie contient token_type, access_token, id_token (lorsque openid est demandé), refresh_token (uniquement lorsque offline_access est demandé), expires_in et scope. Traitez les jetons comme des mots de passe : ils agissent en tant qu'utilisateur de test jusqu'à leur expiration. La commande les écrit sur la sortie standard et nulle part ailleurs, et n'affiche jamais le code.

ACCESS_TOKEN=$(keenauth test login --user ada+test@example.com --client-id app_01j9z3k4m5n6p7q8r9s0t1v2w3 -o json | jq -r .access_token)
curl -H "Authorization: Bearer $ACCESS_TOKEN" http://localhost:3000/api/orders

Ce que fait la commande

  1. Lit le document de découverte de l'environnement et ouvre une requête d'autorisation avec PKCE (S256), state et nonce.
  2. Sur la page de connexion hébergée, saisit l'adresse, demande un code par e-mail et soumet 424242. Si l'environnement demande ensuite un code par e-mail comme second facteur, la commande demande ce code et soumet à nouveau 424242.
  3. Suit la redirection vers l'URI de redirection, vérifie state et iss, puis échange le code d'autorisation au point de terminaison des jetons.
  4. Vérifie que le jeton d'identité a été émis par l'émetteur pour votre application avec le nonce de la requête, puis affiche les jetons.

La commande s'arrête avec une erreur lorsque la connexion exige autre chose, par exemple un mot de passe, une clé d'accès, une application d'authentification, une authentification unique d'entreprise pour le domaine de l'adresse, une page de consentement ou un choix d'organisation.

Environnements

Seuls les environnements development acceptent le code fixe. N'utilisez la commande qu'avec un environnement de développement :

Lorsque le serveur refuse une étape, la CLI affiche sa réponse de problème telle quelle (error, code, status, detail, request_id), par exemple code: test_feature_not_in_production.

Codes de sortie

Code Signification
0 L'utilisateur de test est connecté ; les jetons sont affichés.
1 La connexion a échoué : une erreur OAuth, une incohérence de state, iss ou nonce, ou une étape que la commande ne peut pas achever.
2 Erreur d'utilisation : l'adresse ne contient pas le marqueur +test, une option obligatoire ou l'émetteur est absent, ou une valeur est invalide. Aucune requête n'a été envoyée.
3 Le serveur a répondu 401 ou 403, par exemple invalid_credentials ou test_feature_not_in_production.