Aller au contenu principal

Jeton d’accès personnel (Personal access token)

Les jetons d’accès personnels (PATs) offrent un moyen sécurisé pour les utilisateurs d’accorder un jeton d’accès (Access token) sans utiliser leurs identifiants ni une connexion interactive. Ceci est utile pour les CI/CD, les scripts ou les applications qui doivent accéder aux ressources de manière programmatique.

Gestion des jetons d’accès personnels

Utilisation de la Console

Vous pouvez gérer les jetons d’accès personnels dans la page Détails de l’utilisateur du Console > Gestion des utilisateurs. Dans la carte "Authentification (Authentication)", vous pouvez voir la liste des jetons d’accès personnels et en créer de nouveaux.

Utilisation de Management API

Après avoir configuré le Management API, vous pouvez utiliser les points de terminaison API pour créer, lister et supprimer des jetons d’accès personnels.

Utiliser les PATs pour accorder des jetons d’accès

Après avoir créé un PAT, vous pouvez l’utiliser pour accorder des jetons d’accès à votre application en utilisant le point de terminaison d’échange de jetons.

Équivalence des flux de jetons:

Les jetons d’accès obtenus à l’aide des PATs fonctionnent exactement comme les jetons obtenus via le flux standard refresh_token. Cela signifie :

  • Contexte d’organisation : Les jetons obtenus via PAT prennent en charge les mêmes permissions d’organisation et portées (scopes) que les flux de jeton de rafraîchissement
  • Flux d’autorisation : Vous pouvez utiliser les jetons d’accès échangés via PAT pour les permissions d’organisation et les ressources API au niveau de l’organisation
  • Validation du jeton : La même logique de validation s’applique – seul le type de grant initial diffère

Si vous travaillez avec des organisations, les modèles d’accès et les permissions sont identiques que vous utilisiez un PAT ou un jeton de rafraîchissement.

Requête

L’application effectue une requête d’échange de jeton vers le point de terminaison de jeton du tenant avec un type de grant spécial en utilisant la méthode HTTP POST. Les paramètres suivants sont inclus dans le corps de la requête HTTP au format application/x-www-form-urlencoded.

  1. client_id : OBLIGATOIRE. L’ID client de l’application.
  2. grant_type : OBLIGATOIRE. La valeur de ce paramètre doit être urn:ietf:params:oauth:grant-type:token-exchange pour indiquer qu’un échange de jeton est en cours.
  3. resource : OPTIONNEL. L’indicateur de ressource, identique aux autres requêtes de jeton.
  4. scope : OPTIONNEL. Les portées demandées, identiques aux autres requêtes de jeton.
  5. subject_token : OBLIGATOIRE. Le PAT de l’utilisateur.
  6. subject_token_type : OBLIGATOIRE. Le type du jeton de sécurité fourni dans le paramètre subject_token. La valeur de ce paramètre doit être urn:logto:token-type:personal_access_token.

Réponse

Si la requête d’échange de jeton réussit, le point de terminaison de jeton du tenant retourne un jeton d’accès qui représente l’identité de l’utilisateur. La réponse inclut les paramètres suivants dans le corps de la réponse HTTP au format application/json.

  1. access_token : OBLIGATOIRE. Le jeton d’accès de l’utilisateur, identique aux autres requêtes de jeton comme authorization_code ou refresh_token.
  2. issued_token_type : OBLIGATOIRE. Le type du jeton émis. La valeur de ce paramètre doit être urn:ietf:params:oauth:token-type:access_token.
  3. token_type : OBLIGATOIRE. Le type du jeton. La valeur de ce paramètre doit être Bearer.
  4. expires_in : OBLIGATOIRE. La durée de vie en secondes du jeton d’accès.
  5. scope : OPTIONNEL. Les portées du jeton d’accès.

Exemple d’échange de jeton

POST /oidc/token HTTP/1.1
Host: tenant.logto.app
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64(client-id:client-secret)>

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&scope=profile
&subject_token=pat_W51arOqe7nynW75nWhvYogyc
&subject_token_type=urn%3Alogto%3Atoken-type%3Apersonal_access_token
HTTP/1.1 200 OK
Content-Type: application/json

{
"access_token": "eyJhbGci...zg",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "profile"
}

Exemple de payload du jeton d’accès :

{
"jti": "iFtbZBeh2M1cTTBuKbHk4",
"sub": "123",
"iss": "https://tenant.logto.app/oidc",
"exp": 1672531200,
"iat": 1672527600,
"scope": "profile",
"client_id": "client-id"
}

Qu’est-ce qu’un jeton d’accès personnel ? Quand dois-je utiliser des jetons d’accès personnels ?

Jetons d’accès personnels, authentification machine à machine (Machine-to-Machine), et définition des clés API ainsi que leurs scénarios d’utilisation réels