Token de acceso personal
Los tokens de acceso personal (PATs) proporcionan una forma segura para que los usuarios otorguen un token de acceso sin usar sus credenciales e inicio de sesión interactivo. Esto es útil para CI/CD, scripts o aplicaciones que necesitan acceder a recursos de manera 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 la Consola > Gestión de usuarios. En la tarjeta "Autenticación", puedes ver la lista de tokens de acceso personal y crear nuevos.
Usando Management API
Después de configurar el Management API, puedes usar los endpoints de 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 inquilino con un tipo de concesión especial usando el método HTTP POST. Los siguientes parámetros se incluyen en el cuerpo de la entidad de la solicitud HTTP utilizando el formato application/x-www-form-urlencoded
.
client_id
: REQUERIDO. El ID del cliente de la aplicación.grant_type
: REQUERIDO. El valor de este parámetro debe serurn:ietf:params:oauth:grant-type:token-exchange
, lo que indica que se está realizando un intercambio de tokens.resource
: OPCIONAL. El indicador de recurso, igual que otras solicitudes de token.scope
: OPCIONAL. Los alcances solicitados, igual que otras solicitudes de token.subject_token
: REQUERIDO. El PAT del usuario.subject_token_type
: REQUERIDO. 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 inquilino devuelve un token de acceso que representa la identidad del usuario. La respuesta incluye los siguientes parámetros en el cuerpo de la entidad de la respuesta HTTP utilizando el formato application/json
.
access_token
: REQUERIDO. El token de acceso del usuario, que es el mismo que otras solicitudes de token comoauthorization_code
orefresh_token
.issued_token_type
: REQUERIDO. El tipo de token emitido. El valor de este parámetro debe serurn:ietf:params:oauth:token-type:access_token
.token_type
: REQUERIDO. El tipo de token. El valor de este parámetro debe serBearer
.expires_in
: REQUERIDO. La duración en segundos del token de acceso.scope
: OPCIONAL. Los alcances del token de acceso.
Ejemplo de intercambio de tokens
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 ejemplo de carga útil del token de acceso:
{
"jti": "iFtbZBeh2M1cTTBuKbHk4",
"sub": "123",
"iss": "https://tenant.logto.app/oidc",
"exp": 1672531200,
"iat": 1672527600,
"scope": "profile",
"client_id": "client-id"
}