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 et sans 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.

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 (Resource indicator), comme pour les autres requêtes de jeton.
  4. scope : OPTIONNEL. Les portées (Scopes) demandées, comme pour les autres requêtes de jeton.
  5. subject_token : OBLIGATOIRE. Le PAT de l’utilisateur.
  6. subject_token_type : OBLIGATOIRE. Le type de 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 représentant 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 (Access token) 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 (Scopes) 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 (Personal access token) ? Quand dois-je utiliser les jetons d’accès personnels ?

Jetons d’accès personnels (Personal Access Tokens), authentification machine à machine (Machine-to-Machine authentication), définitions des clés API (API Keys) et leurs scénarios réels