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
.
client_id
: REQUIS. L'ID client de l'application.grant_type
: REQUIS. La valeur de ce paramètre doit êtreurn:ietf:params:oauth:grant-type:token-exchange
indiquant qu'un échange de jetons est en cours.resource
: OPTIONNEL. L'indicateur de ressource, le même que pour les autres requêtes de jetons.scope
: OPTIONNEL. Les portées demandées, les mêmes que pour les autres requêtes de jetons.subject_token
: REQUIS. Le PAT de l'utilisateur.subject_token_type
: REQUIS. 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 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
.
access_token
: REQUIS. Le jeton d’accès de l'utilisateur, qui est le même que pour les autres requêtes de jetons commeauthorization_code
ourefresh_token
.issued_token_type
: REQUIS. Le type de jeton émis. La valeur de ce paramètre doit êtreurn:ietf:params:oauth:token-type:access_token
.token_type
: REQUIS. Le type de jeton. La valeur de ce paramètre doit êtreBearer
.expires_in
: REQUIS. La durée de vie en secondes du jeton d’accès.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"
}