Saltar al contenido principal

API rotación de tokens

información general

Passwork 7.6.0 introduce dos puntos finales API para la rotación separada de accessToken y refreshToken, además de un nuevo tipo de cuenta: cuentas de servicio. Los nuevos puntos finales están diseñados para sesiones de tipo API. Las sesiones API incluyen sesiones de cuenta de servicio y sesiones generadas en la sección de autenticación de usuario.

De forma predeterminada, Passwork devuelve respuestas API en Base64. Para obtener JSON en el cuerpo de la respuesta, agregue el encabezado X-Response-Format: raw. Consulte API formato de respuesta en los documentos de descripción general. Los campos accessTokenExpiredAt y refreshTokenExpiredAt contienen el tiempo de vencimiento en hora Unix. La respuesta incluye solo el campo relacionado con el token rotado (o ambos campos para la rotación de pares).

RotaciónPunto finalResultado
ParPOST /api/v1/sessions/refreshaccessToken actualizado, refreshToken actualizado
token de accesoPOST /api/v1/sessions/refresh-access-tokenaccessToken actualizado
actualizarTokenPOST /api/v1/sessions/refresh-refresh-tokenrefreshToken actualizado

ENVIAR /api/v1/sessions/refresh

Devuelve un nuevo par de accessToken y refreshToken. El par antiguo pasa a ser inválido.

Ejemplo de solicitud

curl -s --request POST \
--url "https://passwork.example.com/api/v1/sessions/refresh" \
--header 'Content-Type: application/json' \
--header 'X-Response-Format: raw' \
--header "Authorization: Bearer 7FmKp2nQ8vRt3WxYz9Bc1Dg4Hj6Lo5Ns0Ue+SmVaXoI=" \
--data "{\"refreshToken\": \"2XkQp3oR9wSu4VyZa0Cd2Eh5Ik7Mp6Ot1Vf+TnWbYpJ=\"}" | jq .

Ejemplo de respuesta

{
"accessToken": "9GnLq4pS0xTv5WzAb1De3Fi6Jl8Nq7Pu2Wg+UoXcZqK=",
"refreshToken": "0HoMr5qT1yUw6XaBc2Ef4Gj7Km9Or8Qv3Xh/VpYdArL=",
"accessTokenExpiredAt": 1775814596,
"refreshTokenExpiredAt": 1782990596
}

Comportamiento

  1. La sesión se resuelve desde el encabezado Authorization y el cuerpo con refreshToken.
  2. Se emite un nuevo par de tokens. El anterior deja de ser válido.

POST /api/v1/sessions/refresh-access-token

Se emite un nuevo accessToken, mientras que el refreshToken en el servidor no cambia. Úselo cuando necesite extender un accessToken de corta duración sin rotar refreshToken.

Ejemplo de solicitud

curl -s --request POST \
--url "https://passwork.example.com/api/v1/sessions/refresh-access-token" \
--header 'Content-Type: application/json' \
--header 'X-Response-Format: raw' \
--data "{\"accessToken\": \"JpNs6rWa2bXc8YdZ0ePq4fGh5Ij1Kl+Mn7Ro9StUvWx=\"}" | jq .

Ejemplo de respuesta

{
"accessToken": "KqOt7sXb3cYd9ZeA1fQr5gHi6Jk2Lm+No8Sp0TuVwXy=",
"accessTokenExpiredAt": 1775820103
}

Comportamiento

  1. La sesión se resuelve a partir del hash accessToken.
  2. La sesión no se elimina y refreshToken no ha caducado.
  3. accessToken no debe estar vencido en el momento de la solicitud.
  4. Se emite un nuevo accessToken. El token anterior deja de ser válido.

POST /api/v1/sessions/refresh-refresh-token

Se emite un nuevo refreshToken, mientras que el accessToken actual sigue siendo válido hasta su vencimiento. Utilice esto para una rotación refreshToken de larga duración sin invalidar un accessToken ya emitido.

Ejemplo de solicitud

curl -s --request POST \
--url "https://passwork.example.com/api/v1/sessions/refresh-refresh-token" \
--header 'Content-Type: application/json' \
--header 'X-Response-Format: raw' \
--data "{\"refreshToken\": \"LrPu8tYc4dZe0AfB2gRs6hJk7Kl3Mn+Op9Tq1UvWxYz=\"}" | jq .

Ejemplo de respuesta

{
"refreshToken": "MsQv9uZd5eAf1BgC3hSt7iKl8Lm4No+Pq0Ur2VwXzA0=",
"refreshTokenExpiredAt": 1782999124
}

Comportamiento

  1. La sesión se resuelve a partir del hash refreshToken.
  2. La sesión no se elimina y refreshToken no ha caducado.
  3. Se emite un nuevo refreshToken. El token anterior deja de ser válido.