Jeton d’accès personnel
Les jetons d’accès personnels (PATs) offrent un moyen sécurisé pour les utilisateurs de fournir un jeton d’accès sans utiliser leurs identifiants et connexion interactive. Cela 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 de la Console > Gestion des utilisateurs. Dans la carte "Authentification", vous pouvez voir la liste des jetons d’accès personnels et en créer de nouveaux.
Utilisation de la Management API
Après avoir configuré la 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 vers le 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 l'entité 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 contenu 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"
}
Ressources associées
Jetons d’accès personnels, authentification machine à machine, et définition des clés API et leurs scénarios réels