Saltar al contenido principal

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.

  1. client_id: REQUERIDO. El ID del cliente de la aplicación.
  2. grant_type: REQUERIDO. El valor de este parámetro debe ser urn:ietf:params:oauth:grant-type:token-exchange, lo que indica que se está realizando un intercambio de tokens.
  3. resource: OPCIONAL. El indicador de recurso, igual que otras solicitudes de token.
  4. scope: OPCIONAL. Los alcances solicitados, igual que otras solicitudes de token.
  5. subject_token: REQUERIDO. El PAT del usuario.
  6. subject_token_type: REQUERIDO. El tipo de token de seguridad proporcionado en el parámetro subject_token. El valor de este parámetro debe ser urn: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.

  1. access_token: REQUERIDO. El token de acceso del usuario, que es el mismo que otras solicitudes de token como authorization_code o refresh_token.
  2. issued_token_type: REQUERIDO. El tipo de token emitido. El valor de este parámetro debe ser urn:ietf:params:oauth:token-type:access_token.
  3. token_type: REQUERIDO. El tipo de token. El valor de este parámetro debe ser Bearer.
  4. expires_in: REQUERIDO. La duración en segundos del token de acceso.
  5. 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"
}