Autenticación por bearer token
Este método es ideal cuando necesitas más control sobre cómo se maneja la autenticación. A diferencia de las cookies, debes guardar y enviar el token en cada petición.
Paso 1: Cómo iniciar sesión para obtener Bearer Token
Para obtener un Bearer Token, debes modificar tu petición de login de la siguiente forma:
- Usar tu api_token (no tu contraseña) en el Basic Auth del login.
- Enviar auth_type: 'bearer' en el body de la petición para indicarle a la API que quieres un Bearer Token.
Cómo codificar tus credenciales
Debes usar tu api_token en lugar de tu contraseña:
# Generar el token Base64 con api_token
echo -n "[email protected]:9d459233974f1500aa79d94f550c2694" | base64
# Resultado: dXN1YXJpb0BlamVtcGxvLmNvbTo5ZDQ1OTIzMzk3NGYxNTAwYWE3OWQ5NGY1NTBjMjY5NA==Para usar Bearer Token, debes usar tu
api_tokenen el Basic Auth, no tu contraseña. Si usas tu contraseña, no recibirás el Bearer Token.
Ejemplo de petición de login
curl --location --request POST 'https://nominapp-api-stage.herokuapp.com/v1/sessions' \
--header 'Authorization: Basic dXN1YXJpb0BlamVtcGxvLmNvbTo5ZDQ1OTIzMzk3NGYxNTAwYWE3OWQ5NGY1NTBjMjY5NA==' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"auth_type": "bearer"
}'Paso 2: Qué recibes después del login
Cuando inicias sesión exitosamente con auth_type: 'bearer', la API te devuelve un api_access_token directamente en el body de la respuesta JSON. Este es el token que usarás para autenticar todas tus peticiones siguientes.
Respuesta del login
A diferencia del método de Cookies, aquí sí recibes el token en el body de la respuesta:
{
"data": {
"user": {
"id": "3a4b8cc7-fb8c-4eac-94fb-c0b6b39bbcf1",
"email": "[email protected]",
...
},
"api_access_token": "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaWxrWmpJME5qYzVZaTB4TmpZM0xUUXhNVE10T0RZMk1pMDJNVEUyTmpnMk1qWXhZamNHT2daRlZBPT0iLCJleHAiOiIyMDI1LTAxLTE1VDEwOjAwOjAwLjAwMFoiLCJwdXJwb3NlIjoiYXBpX2FjY2VzcyJ9fQ==",
"api_access_token_expires_at": "2025-01-15T10:00:00.000Z",
"created_at": 1764301434981,
"is_new_user": false
}
}Guarda el
api_access_tokenque recibes, lo necesitarás para todas tus peticiones siguientes.
Características del Bearer Token
El api_access_token que recibes tiene estas características:
- Duración: El token es válido por 8 horas. Después de ese tiempo, expira y necesitas obtener uno nuevo.
- Formato: Es un token JWT firmado (un tipo de token seguro y estándar).
- Renovación: Cuando expire, debes iniciar sesión nuevamente para obtener un nuevo token. No hay refresh token.
Paso 3: Cómo hacer peticiones siguientes
Una vez que recibes el api_access_token, debes incluirlo en cada petición que hagas a la API. A diferencia de las cookies, aquí tú tienes el control total sobre cuándo y cómo enviar el token.
Formato del header
Debes agregar un header llamado Authorization con el valor Bearer seguido de un espacio y luego tu token:
Authorization: Bearer <tu_api_access_token>
No olvides incluir la palabra "Bearer" seguida de un espacio antes del token. Es parte del formato requerido.
Ejemplo de petición
curl --location --request GET 'https://nominapp-api-stage.herokuapp.com/v1/economic_sectors' \
--header 'Authorization: Bearer eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaWxrWmpJME5qYzVZaTB4TmpZM0xUUXhNVE10T0RZMk1pMDJNVEUyTmpnMk1qWXhZamNHT2daRlZBPT0iLCJleHAiOiIyMDI1LTAxLTE1VDEwOjAwOjAwLjAwMFoiLCJwdXJwb3NlIjoiYXBpX2FjY2VzcyJ9fQ==' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json'En cada petición, incluye
Authorization: Bearer <tu_token>en los headers. Sin esto, la API no sabrá quién eres y rechazará tu petición.
Renovación del token
El api_access_token expira cada 8 horas. No existe un mecanismo de refresh token. Cuando expire, repite el Paso 1 para obtener uno nuevo.
Ventajas del Bearer Token
- ✅ Flexibilidad: Funciona en cualquier contexto.
- ✅ Control: Tienes control total sobre cuándo y cómo usar el token.
- ✅ Independiente del cliente: No depende de soporte de cookies.
- ✅ Ideal para APIs: Perfecto para integraciones entre servicios.
Limitaciones del Bearer Token
- ⚠️ Manejo manual: Debes guardar y enviar el token manualmente.
- ⚠️ Expiración: El token expira en 8 horas.
- ⚠️ Sin refresh token: A diferencia de las cookies, el Bearer Token no tiene un mecanismo de refresh token. Debes iniciar sesión nuevamente cada vez que expire.
Errores comunes
Error 401: No autorizado
Causa: El api_access_token expiró (pasaron más de 8 horas) o el header está mal formado.
Solución:
- Haz login de nuevo para obtener un nuevo
api_access_token. - Verifica que el header sea exactamente
Authorization: Bearer <token>(con la palabra "Bearer", un espacio, y luego el token).
No recibo el api_access_token después del login
api_access_token después del login¿Qué significa este problema?
Haces el login pero no ves el campo api_access_token en la respuesta JSON. Esto significa que la API no generó el Bearer Token.
Causas y soluciones:
1. Estás usando tu contraseña en lugar de tu api_token
api_tokenCausa: Para obtener un Bearer Token, debes usar tu api_token en el Basic Auth, no tu contraseña. Si usas tu contraseña, el login funciona pero devuelve cookies en lugar del Bearer Token.
Solución: Usa tu api_token (no tu contraseña) en el Basic Auth del login. El formato debe ser: email:api_token codificado en Base64.
2. Olvidaste enviar auth_type: 'bearer'
auth_type: 'bearer'Causa: No incluiste el parámetro auth_type: 'bearer' en el body de la petición de login.
Solución: Asegúrate de incluir {"auth_type": "bearer"} en el body de la petición POST /v1/sessions. Sin este parámetro, la API asume que quieres usar Cookies y no devuelve el Bearer Token.
Updated about 2 months ago