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
.
client_id
: OBLIGATOIRE. L’ID client de l’application.grant_type
: OBLIGATOIRE. La valeur de ce paramètre doit êtreurn:ietf:params:oauth:grant-type:token-exchange
pour indiquer qu’un échange de jeton est en cours.resource
: OPTIONNEL. L’indicateur de ressource (Resource indicator), comme pour les autres requêtes de jeton.scope
: OPTIONNEL. Les portées (Scopes) demandées, comme pour les autres requêtes de jeton.subject_token
: OBLIGATOIRE. Le PAT de l’utilisateur.subject_token_type
: OBLIGATOIRE. Le type de jeton de sécurité fourni dans le paramètresubject_token
. La valeur de ce paramètre doit êtreurn: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
.
access_token
: OBLIGATOIRE. Le jeton d’accès (Access token) de l’utilisateur, identique aux autres requêtes de jeton commeauthorization_code
ourefresh_token
.issued_token_type
: OBLIGATOIRE. Le type du jeton émis. La valeur de ce paramètre doit êtreurn:ietf:params:oauth:token-type:access_token
.token_type
: OBLIGATOIRE. Le type du jeton. La valeur de ce paramètre doit êtreBearer
.expires_in
: OBLIGATOIRE. La durée de vie en secondes du jeton d’accès.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"
}
Ressources associées
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