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ón | Punto final | Resultado |
|---|---|---|
| Par | POST /api/v1/sessions/refresh | accessToken actualizado, refreshToken actualizado |
| token de acceso | POST /api/v1/sessions/refresh-access-token | accessToken actualizado |
| actualizarToken | POST /api/v1/sessions/refresh-refresh-token | refreshToken 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
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
- La sesión se resuelve desde el encabezado
Authorizationy el cuerpo conrefreshToken. - 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
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
- La sesión se resuelve a partir del hash
accessToken. - La sesión no se elimina y refreshToken no ha caducado.
accessTokenno debe estar vencido en el momento de la solicitud.- 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
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
- La sesión se resuelve a partir del hash
refreshToken. - La sesión no se elimina y refreshToken no ha caducado.
- Se emite un nuevo
refreshToken. El token anterior deja de ser válido.