Tokens de API
Autenticar y autorizar las API de la plataforma de viajes de Expedia Group
La autorización y la autenticación (a veces abreviadas como AuthN y AuthZ) son dos funciones separadas que ayudan a asegurar el acceso a las API y los datos.
- La autenticación establece la identidad de un cliente API (para garantizar que te pertenece).
- La autorización garantiza que un cliente tenga permiso para realizar una solicitud de API determinada.
Acerca de los tokens
OAuth2.0 es un protocolo estándar del sector que utiliza tokens (cadenas alfanuméricas) para establecer pruebas de autenticación y autorización. Un token incluye:
- La identidad del cliente API que realiza la solicitud.
- Los permisos que se le han otorgado al cliente (la lista de ámbitos que le has asignado).
- La hora a la que se creó el token y durante cuánto tiempo se puede usar. Los tokens emitidos por la plataforma de viajes de Expedia Group son opacos, por lo que no se pueden decodificar ni descifrar.
Autenticación: adquirir un token
Un cliente API debe adquirir un token antes de realizar una solicitud de API, momento en el que se lleva a cabo la autenticación. Los tokens se proporcionan a través de un punto de conexión de API especial que utiliza HTTP Basic Auth. Debes proporcionar las credenciales de la API (el ID y el secreto del cliente) como nombre de usuario y contraseña.
Autorización: proporcionar un token con cada solicitud de API
Se puede usar un solo token para autorizar varias solicitudes de API mientras tenga validez. Todos los tokens son válidos durante 30 minutos y el software del cliente debe adquirir un nuevo token antes de que caduque el actual.
En las solicitudes de API que no tengan un token válido, se obtendrá un código de error HTTP 403 (no autorizado). Este error se producirá cuando el token:
- No se incluya en la solicitud
- No esté emitido por la API de tokens
- Haya caducado
- No incluya todos los ámbitos obligatorios
La API de tokens
Utiliza esta API para adquirir un token desde el software del cliente:
curl --location --request POST 'https://api.expediagroup.com/identity/oauth2/v3/token' \
--header 'Authorization: Basic <key>:<secret>' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials'