Aller au contenu principal

Jeton d’accès personnel

Les jetons d’accès personnels (PATs) offrent un moyen sécurisé pour les utilisateurs de fournir des jetons d’accès sans utiliser leurs identifiants et la connexion interactive. Cela est utile pour CI/CD, les scripts ou les applications qui ont besoin d’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 de la Console. Dans la carte "Authentification", 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 fournir des jetons d’accès

Après avoir créé un PAT, vous pouvez l’utiliser pour fournir 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 jetons au point de terminaison de jetons du locataire avec un type de subvention spécial en utilisant la méthode HTTP POST. Les paramètres suivants sont inclus dans le corps de l'entité de la requête HTTP en utilisant le format application/x-www-form-urlencoded.

  1. client_id: REQUIS. L'ID client de l'application.
  2. grant_type: REQUIS. La valeur de ce paramètre doit être urn:ietf:params:oauth:grant-type:token-exchange indiquant qu'un échange de jetons est en cours.
  3. resource: OPTIONNEL. L'indicateur de ressource, le même que pour les autres requêtes de jetons.
  4. scope: OPTIONNEL. Les portées demandées, les mêmes que pour les autres requêtes de jetons.
  5. subject_token: REQUIS. Le PAT de l'utilisateur.
  6. subject_token_type: REQUIS. 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 jetons réussit, le point de terminaison de jetons du locataire renvoie 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 en utilisant le format application/json.

  1. access_token: REQUIS. Le jeton d’accès de l'utilisateur, qui est le même que pour les autres requêtes de jetons comme authorization_code ou refresh_token.
  2. issued_token_type: REQUIS. Le type de jeton émis. La valeur de ce paramètre doit être urn:ietf:params:oauth:token-type:access_token.
  3. token_type: REQUIS. Le type de jeton. La valeur de ce paramètre doit être Bearer.
  4. expires_in: REQUIS. 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 jetons

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"
}

Le payload du jeton d’accès exemple :

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