Obtenir un jeton d’accès
Objectif
Obtenir un jeton d’accès OAuth2 auprès du service d’identité Parsware afin de pouvoir appeler les API de la plateforme pendant le développement.
Prérequis
- Le service d’identité est démarré et joignable (en développement local, il écoute sur
http://localhost:5000). - Les données d’amorçage de développement ont été créées (elles le sont automatiquement au
premier démarrage) : un locataire de développement et un compte administrateur
(
admin@parsware.local). - Un client REST tel que
curl.
Étapes
-
Demandez un jeton au point de terminaison de jeton, avec le client de développement et les identifiants de l’administrateur créé à l’amorçage :
curl -X POST http://localhost:5000/connect/token \-H "Content-Type: application/x-www-form-urlencoded" \-d "grant_type=password" \-d "username=admin@parsware.local" \-d "password=Passw0rd!" \-d "scope=profile roles parsware.api offline_access" \-d "client_id=parsware-dev-cli" \-d "client_secret=dev-cli-secret" -
Lisez l’
access_tokendans la réponse JSON. La réponse contient aussi unrefresh_token(parce queoffline_accessa été demandé) et une valeurexpires_inen secondes. -
Appelez une API en plaçant le jeton dans l’en-tête
Authorization. Pour vérifier que le jeton fonctionne, appelez le point de terminaison userinfo :curl http://localhost:5000/connect/userinfo \-H "Authorization: Bearer <access_token>"La réponse identifie l’utilisateur connecté (sujet, nom, e-mail, locataire).
Ce qui se passe en coulisses
Le service d’identité vérifie le mot de passe de l’administrateur, puis émet un jeton d’accès JWT signé. Le jeton est signé (et non chiffré) : chaque service de la plateforme le valide donc directement à l’aide des clés de signature publiées par le service d’identité — sans rappeler le service d’identité à chaque requête.
Dépannage
invalid_grant— le nom d’utilisateur ou le mot de passe est incorrect, ou le compte est verrouillé après des échecs répétés. Patientez puis réessayez, ou réinitialisez le mot de passe.invalid_client— le coupleclient_id/client_secretne correspond à aucun client enregistré. En développement, utilisezparsware-dev-cli/dev-cli-secret.invalid_scope— une portée demandée n’est pas autorisée pour ce client. Ne demandez queprofile,roles,offline_accessetparsware.api.- Connexion refusée — le service d’identité n’est pas démarré ou écoute sur un autre port.
- Le jeton ne porte que
mfa.enrol(sonaudvautparsware-mfa-enrolment) — il s’agit d’un compte du personnel qui n’a pas encore d’application d’authentification. L’authentification multifacteur est obligatoire pour le personnel : enregistrez-en une (depuis le profil, ou parPOST /connect/mfa/enrolmentavec ce jeton), puis refaites la demande avec-d "mfa_code=<the six digits>". Sur un déploiement, l’administrateur est la personne désignée parPLATFORM_ADMIN_EMAILdu déploiement, et nonadmin@parsware.local.
Scénarios associés
- Inspecter les clés JWKS publiées par le service d’identité.
L’octroi par mot de passe présenté ici est une commodité de développement pour obtenir un jeton en ligne de commande. La véritable connexion interactive utilise le flux par code d’autorisation avec PKCE, via le Shell de la plateforme.