Clave para asegurar que apps externas interactúen de forma segura con una API.
El proceso de autenticación mediante OAuth2 es un paso crucial para garantizar que las aplicaciones de terceros puedan interactuar de manera segura con una API, garantizando que solo los usuarios autorizados puedan acceder a ciertos recursos. Sin embargo, en este proceso, pueden surgir varios errores que impiden obtener o renovar el token de acceso. A continuación, te explicamos los pasos involucrados en este proceso, los posibles errores que podrías enfrentar y cómo solucionarlos.
Proceso de autenticación con OAuth2
Cuando un merchant entrega el código de autorización, se inicia el proceso de autenticación mediante OAuth2. El primer paso consiste en enviar los parámetros necesarios al Endpoint Authenticate OAuth2 utilizando una solicitud HTTP POST.
Ejemplo de solicitud:
--header 'cache-control: no-cache' \
--header 'Content-Type: application/json' \
--data '{
"client_id": 00000000000,
"client_secret": "NMV6TupxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpR3YNW",
"grant_type": "authorization_code",
"code": "ac-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx"
}'
En este punto, la API responderá con un objeto que contiene el token
, refreshToken
y la duración de su validez.
Respuesta exitosa:
"_id": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"status": "created",
"OauthClientId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"MerchantId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"CreatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"UpdatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"OwnerId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"scopes": { ... },
"expiresAt": "2021-03-03T01:45:34.958Z",
"refreshToken": "rt-xxxxxxxx-xxxx-4fd9-xxxx-8d9a818bef2a",
"refreshTokenExpiresAt": "2021-03-04T19:45:34.958Z",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
El token
tiene una validez de 6 horas, mientras que el refreshToken
tiene una validez de 48 horas y puede ser utilizado una única vez para renovar el acceso.
Renovación del Token mediante el Refresh Token
Cuando el token
está cerca de expirar, se debe utilizar el Endpoint Refresh Token OAuth2 para obtener un nuevo token
y un nuevo refreshToken
. Esto debe realizarse antes de que el token original caduque, idealmente cuando queda aproximadamente 1 hora de vida.
Ejemplo de solicitud para renovar el token:
--header 'cache-control: no-cache' \
--header 'Content-Type: application/json' \
--data '{
"client_id": 00000000000,
"client_secret": "NMV6TupxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpR3YNW",
"grant_type": "refresh_token",
"refresh_token": "rt-xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx"
}'
Respuesta exitosa:
"_id": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"status": "created",
"OauthClientId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"MerchantId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"CreatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"UpdatedById": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"OwnerId": "xxxxxxxxx-3736-4f94-8xxx-xxxxxxxxxxxxxxx",
"scopes": { ... },
"expiresAt": "2021-03-03T01:45:34.958Z",
"refreshToken": "rt-xxxxxxxx-xxxx-4fd9-xxxx-8d9a818bef2a",
"refreshTokenExpiresAt": "2021-03-04T19:45:34.958Z",
"token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Este proceso puede ser automatizado para que, cuando el token
esté cerca de su expiración (por ejemplo, con 5 horas de antelación), se realice la renovación automática utilizando el refreshToken. De este modo, se garantiza la continuidad en el flujo de autenticación sin interrupciones.
Errores Comunes
-
Token Expirado o Invalidado: Si el
token
ha expirado y no se ha renovado a tiempo, el proceso debe reiniciarse desde el principio. Esto implica que el merchant deberá generar un nuevo código de autorización manualmente desde la configuración de la aplicación. -
Refresh Token Expirado o No Utilizado: Si el
refreshToken
ha expirado o no ha sido utilizado dentro de su período de validez, el proceso también debe reiniciarse desde cero, lo que requerirá que el merchant obtenga un nuevo código de autorización manualmente. -
Error en la Solicitud de Renovación: Si hay errores en la solicitud de renovación del
token
(por ejemplo, errores de red, parámetros incorrectos, etc.), asegúrate de validar los datos enviados, como elclient_id
,client_secret
y elrefresh_token
. -
Error en la Respuesta del Servidor: Si la API devuelve un error, revisa el código de estado HTTP y el mensaje de error para identificar la causa. Algunos errores comunes incluyen falta de permisos o problemas de autenticación.
Resumen
Para gestionar adecuadamente la autenticación OAuth2, es importante realizar lo siguiente:
-
Obtener y gestionar el
token
y elrefreshToken
de manera eficiente. -
Automatizar la renovación del
token
antes de su expiración. -
Asegurarse de que el
refreshToken
se use dentro de su período de validez. -
Si el
refreshToken
expira o no es válido, reiniciar el proceso de autenticación obteniendo un nuevo código de autorización manualmente.
Este proceso garantiza que las interacciones con la API sean seguras y fluidas, manteniendo el acceso autorizado de manera continua y sin interrupciones.
Equipo Integraciones API Multivende
0 comentarios
El artículo está cerrado para comentarios.