Token de acceso personal (Personal access token)
Los tokens de acceso personal (PATs) proporcionan una forma segura para que los usuarios otorguen token de acceso (Access token) sin usar sus credenciales ni el inicio de sesión interactivo. Esto es útil para CI/CD, scripts o aplicaciones que necesitan acceder a recursos de forma programática.
Gestión de tokens de acceso personal
Usando la Consola
Puedes gestionar los tokens de acceso personal en la página de Detalles del usuario de Consola > Gestión de usuarios. En la tarjeta "Autenticación (Authentication)", puedes ver la lista de tokens de acceso personal y crear nuevos.
Usando Management API
Después de configurar la Management API, puedes usar los endpoints de la API para crear, listar y eliminar tokens de acceso personal.
Usar PATs para otorgar tokens de acceso
Después de crear un PAT, puedes usarlo para otorgar tokens de acceso a tu aplicación utilizando el endpoint de intercambio de tokens.
Solicitud
La aplicación realiza una solicitud de intercambio de tokens al endpoint de token del tenant con un tipo de concesión especial usando el método HTTP POST. Los siguientes parámetros se incluyen en el cuerpo de la solicitud HTTP usando el formato application/x-www-form-urlencoded
.
client_id
: OBLIGATORIO. El ID de cliente de la aplicación.grant_type
: OBLIGATORIO. El valor de este parámetro debe serurn:ietf:params:oauth:grant-type:token-exchange
e indica que se está realizando un intercambio de tokens.resource
: OPCIONAL. El indicador de recurso (resource indicator), igual que en otras solicitudes de token.scope
: OPCIONAL. Los alcances (scopes) solicitados, igual que en otras solicitudes de token.subject_token
: OBLIGATORIO. El PAT del usuario.subject_token_type
: OBLIGATORIO. El tipo de token de seguridad proporcionado en el parámetrosubject_token
. El valor de este parámetro debe serurn:logto:token-type:personal_access_token
.
Respuesta
Si la solicitud de intercambio de tokens es exitosa, el endpoint de token del tenant devuelve un token de acceso que representa la identidad del usuario. La respuesta incluye los siguientes parámetros en el cuerpo de la respuesta HTTP usando el formato application/json
.
access_token
: OBLIGATORIO. El token de acceso del usuario, que es igual que en otras solicitudes de token comoauthorization_code
orefresh_token
.issued_token_type
: OBLIGATORIO. El tipo de token emitido. El valor de este parámetro debe serurn:ietf:params:oauth:token-type:access_token
.token_type
: OBLIGATORIO. El tipo de token. El valor de este parámetro debe serBearer
.expires_in
: OBLIGATORIO. El tiempo de vida en segundos del token de acceso.scope
: OPCIONAL. Los alcances (scopes) del token de acceso.
Ejemplo de intercambio de token
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"
}
El payload de ejemplo del token de acceso:
{
"jti": "iFtbZBeh2M1cTTBuKbHk4",
"sub": "123",
"iss": "https://tenant.logto.app/oidc",
"exp": 1672531200,
"iat": 1672527600,
"scope": "profile",
"client_id": "client-id"
}
Recursos relacionados
¿Qué es un token de acceso personal? ¿Cuándo debo usar tokens de acceso personal?
Tokens de acceso personal, autenticación máquina a máquina (Machine-to-Machine), y definición de API Keys y sus escenarios en el mundo real