Aller au contenu principal

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​

  1. 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"
  2. Lisez l’access_token dans la réponse JSON. La réponse contient aussi un refresh_token (parce que offline_access a été demandé) et une valeur expires_in en secondes.

  3. 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 couple client_id/client_secret ne correspond à aucun client enregistré. En développement, utilisez parsware-dev-cli / dev-cli-secret.
  • invalid_scope — une portée demandée n’est pas autorisée pour ce client. Ne demandez que profile, roles, offline_access et parsware.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 (son aud vaut parsware-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 par POST /connect/mfa/enrolment avec 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 par PLATFORM_ADMIN_EMAIL du déploiement, et non admin@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.