This is an auto-generated translation

Información general sobre el SSO de OAuth 2.0

OAuth 2.0 es un estándar de autorización que permite a las aplicaciones obtener acceso limitado a cuentas de usuario en un servicio HTTP. Funciona delegando la autenticación del usuario al servicio que aloja la cuenta de usuario y autorizando a las aplicaciones de terceros para que accedan a la cuenta de usuario. OAuth 2.0 proporciona flujos de autorización en aplicaciones web y de escritorio, y en dispositivos móviles.

Más información sobre OAuth 2.0

SSO básico

Independientemente de las funciones que hayas seleccionado, el SSO básico requiere algunos datos específicos y, en particular, una clave pública. Para añadir implementaciones de fidelidad o tarjetas de crédito, se pedirá más información.

Información de configuración

Para configurar correctamente el acceso SSO de OAuth 2.0 a tu sitio web creado a partir de una plantilla, necesitaremos datos como los siguientes:

  • API (autorizar, token, userProfile)
  • ID de cliente
  • Secreto de cliente
  • ResponseMode
  • isNounceEnabled
  • customerDetailsAPIKey (si está disponible)

Flujos de autorización

OAuth Authorization flows

Autorizar punto final

El punto de conexión GET /authorize se utiliza para la autenticación y la autorización. Devuelve una concesión o código de autorización una vez que el usuario se ha identificado. Es una redirección del navegador que te dirige a enviar tus credenciales para autenticarte.

CampoDescripciónTipo de datosEjemplo de valor¿Obligatorio?
client_idIdentifica al cliente. Debe coincidir con el valor prerregistrado en tu proveedor de identidad (IDP). Se obtiene durante el registro manual del cliente o a través de la API de registro dinámico de clientes.Cadena 
nonceSe utiliza para mitigar los ataques de repetición. Este valor se devuelve en el ID de token.Cadena 
promptEl tipo de interacción necesaria para validar. Si está "vacío", el usuario debe identificarse si aún no se ha autentificado. Si es "ninguno", el IDP no solicitará el inicio de sesión, pero devolverá un código de autorización si se ha iniciado sesión, o un error en caso contrario.CadenaValores válidos:
ninguno
O VACIAR
redirect_uriLugar de devolución de llamada donde se debe enviar el código de autorización o los tokens. Debe coincidir con el valor prerregistrado en tu IDP durante el registro del cliente.Cadena 
response_typeValor code (IDP).Cadena 
response_modeCómo debe devolverse la respuesta de autorización.CadenaValor válido:
consulta
scopeIdentificador de acceso, utilizado para obtener los detalles del perfil. Necesario para las solicitudes de autenticación.CadenaPerfil y correo electrónico
stateEl estado de la interacción. Este valor se devuelve en el token y permite al usuario hacer clic, autenticarse y volver a la página que le interesaba originalmente. El valor puede contener caracteres alfanuméricos, comas, puntos, guiones bajos y guiones.Cadena 
ui_localesLenguajes y scripts preferidos por el usuario para la interfaz de usuario.Cadenaen_CA, fr_CA
audienceEl destinatario previsto.CadenaDefinido por los socios

Parámetros de respuesta

ParámetroDescripciónTipo de datos¿Obligatorio?
codeCódigo de autorización que identifica al cliente. Debe coincidir con el valor prerregistrado en tu IDP. Se obtiene durante el registro manual del cliente o a través de la API de registro dinámico de clientes.Cadena
stateEl estado de la interacción. Este valor se devuelve en el token y permite al usuario hacer clic, autenticarse y volver a la página que le interesaba originalmente. El valor puede contener caracteres alfanuméricos, comas, puntos, guiones bajos y guiones.Cadena

Ejemplo de URL de autorización

https://example.com/authorize?client_id={clientID}&response_type=code&state=d6b93799-404b-4205-9bb3-c579b1180428&scope=email profile&nounce=234567687867&redirect_uri=https://{ExpediaDomain}/sso/auth

Ejemplo de URL de devolución de llamada

https://{ExpediaDomain}/sso/auth?code=12345678&state=d6b93799-404b-4205-9bb3-c579b1180428

Punto final del token

El punto final POST /tokenes una llamada a la API backend que se utiliza para obtener un token de acceso y un token de identificación presentando una concesión o código de autorización.

Parámetros de solicitud

ParámetroDescripciónTipo de datos¿Obligatorio?
grant_typeEl mecanismo que utiliza tu IDP para autorizar la creación de los tokens. Valor: authorization_codeCadena
redirect_uriEspecifica la ubicación de la llamada de retorno donde se ha enviado la autorización. Este valor debe coincidir con el redirect_uri utilizado para generar el authorization_code original.Cadena
codeCódigo de identificación del cliente recibido en la respuesta a la llamada /authorize.Cadena

Encabezados de solicitud

ParámetroDescripciónTipo de datosEjemplo de valor¿Obligatorio?
acceptDebe ser "application/json"Cadenaapplication/json
authorizationCodifica el ID y el secreto del cliente con Base64. Utiliza la información codificada en el encabezado de autorización HTTP.CadenaBasic<ID y secreto del cliente cifrados con Base64>
Content-TypeDebe ser "application/x-www-form-urlencoded"Cadenaapplication/x-www-form-urlencoded

Propiedades de respuesta

CampoDescripciónTipo de datos
access_tokenUn token de accesoCadena
token_typeEl público del tokenCadena
expires_inEl tiempo de expiración del token de acceso en segundosEntero
scopeLos ámbitos contenidos en el token de accesoCadena

Muestra de token CURL

curl --location 'https://example.com/token’ \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic {encoded ClientID:clientSecret}' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'redirect_uri=https://{ExpediaDomain}/sso/auth’ \
--data-urlencode 'code={Authorization code after login as part of callback to Expedia /sso/auth endpoint}'

Ejemplo de respuesta de token

{
    "access_token": "eyJhbGciOi.JSUzI1NiIsImtpZCI6Ilk1MkFDVXd3QV9SUzI1NiIsInBp.LmF0bSI6ImlrY20ifQ",
    "token_type": "Bearer",
    "expires_in": 1799
}

Punto final Userinfo

El punto final GET /userinfoes una llamada a la API backend que devuelve reclamaciones sobre el usuario autenticado basándose en el token de acceso proporcionado. Devuelve los datos del perfil del usuario, que se utilizan para incluir el nombre del cliente en la cabecera de la cuenta del sitio, que luego puede cargar la información del nivel de fidelización a través de la cuenta del programa.

Nota: Si no se proporcionan parámetros obligatorios en la respuesta, se producirán problemas con la experiencia del cliente en el sitio. Por ejemplo, el nombre del cliente no aparecerá en el sitio de la plantilla, y faltará la información de la cuenta del programa necesaria para conectar la inscripción de fidelización en Expedia's end.

Encabezados de solicitud

CampoDescripciónTipo de datosEjemplo de valor¿Obligatorio?
ClientIdIdentifica al cliente. Debe coincidir con el valor prerregistrado en tu proveedor de identidad (IDP). Se obtiene durante el registro manual del cliente o a través de la API de registro dinámico de clientes.Cadena 
AuthorizationCabecera HTTP utilizada para enviar credenciales o tokens para autenticar a un usuarioCadenaPortador [access_token]

Respuesta

CampoDescripciónTipo de datosEjemplo de valor¿Obligatorio?
membershipIdIdentificador que identifica de forma única la cuenta del ClienteCadena 
optInIndicador booleano si el cliente opta por recibir correos electrónicos de marketingBooleanoverdadero/falso
languageIdLengua preferida por el usuarioCadenaEn, fr
channelTypeDiferentes plataformas a través de las cuales un usuario interactúa con una aplicaciónCadenaWEB, MÓVIL, TABLET
firstNameNombre del ClienteCadena 
middleNameSegundo nombre del ClienteCadena 
lastNameApellidos del ClienteCadena 
emailDirección de correo electrónico del ClienteCadena 
programAccountLoyalty-related informaciónprogramAccountConsulta la sección Add loyalty -> programAccountpara más detalles sobre los Objetos.

Ejemplo de Userinfo CURL

curl --location 'https://example.com/userinfo' \
--header 'client_id: {clientId}' \
--header 'Authorization: Bearer {acess_token from token endpoint}'

Ejemplo de respuesta de Userinfo

{
  "membershipId": "12345678",
  "languageID": "en",
  "middleName": "MiddleName",
  "lastName": "LastName",
  "firstName": "FirstName",
  "email": "test@expediagroup.com",
  "programAccount": {
    "programId": "Gold",
    "loyaltyAccountBalance": {
      "value": "10000",
      "currency": "Points"
    }
  }
}

Añadir programa de fidelidad

Como parte de tu plantilla de sitio web, puedes incluir la posibilidad de que los clientes ganen puntos de fidelidad en sus compras de viajes. Si lo deseas, tu plantilla también puede permitir a los clientes utilizar sus puntos de fidelidad acumulados para comprar viajes.

Se aplican los mismos requisitos de configuración que en la implementación estándar, así como muchos de los valores. Aquí solo se incluyen los que son diferentes.

Además del estándar user information, la configuración del programa de fidelización incluirá los siguientes valores.

programAccount

CampoDescripciónTipo de datos¿Obligatorio?
programIdIdentificador del programa de fidelidad al que está afiliado el cliente o el nombre del nivel asociado al programa de fidelidadCadena
loyaltyAccountNumberEl número de la cuenta de fidelidad del cliente; solo debería rellenarse si se requiere un identificador secundario (que no sea el membershipId único) para operaciones de fidelidadCadena
lastFourDigitsOfCreditCardLos cuatro últimos dígitos de la tarjeta de crédito utilizada en la reservaEntero
accountNameNombre del programa (si no coincide con el nombre del nivel)Cadena
loyaltyConversionRatioRatio de cómo se convierten los puntos obtenidos en el pago (por ejemplo, 1 EUR = 1 punto)Doble
loyaltyAccountBalanceSaldo actual de puntos de fidelidad obtenidos por el clienteImporte
(consulta la sección Importe más abajo para conocer los detalles del Objeto)

Importe

CampoDescripciónTipo de datos¿Obligatorio?
valueSaldo de fidelidad; anidado bajo loyaltyAccountBalanceLargo
currencyLa moneda de recompensa que se utiliza en el programa de fidelidad, como CAD, USD, PUNTOS, MILLAS; anidado bajo loyaltyAccountBalanceCadena

En silencio sign-in

Silencioso sign-in permite la autenticación automática cuando ya existe una sesión válida con el proveedor de identidad. Si el usuario se autentica en otra pestaña del navegador o aplicación, se reutilizará la sesión existente y el usuario iniciará la sesión sin que se le pida que introduzca sus credenciales.

Esta función se basa en el mantenimiento de una cookie del navegador para conservar el estado de logged-in. Utiliza el mismo punto final de autorización tanto para el inicio de sesión estándar como para los flujos SSO. Cuando se detecta una sesión activa, la petición se redirige a una URL de redirección SSO designada sin activar la reautenticación.

El SSO sólo puede habilitarse para puntos de venta que no estén sujetos a los requisitos de cumplimiento del Reglamento General de Protección de Datos (RGPD) de la UE, debido a la persistencia de sesión de cookie-based. Tendrás que configurar nuestra URL de redireccionamiento en los ajustes de tu proveedor de identidad para habilitar el flujo SSO. Expedia proporcionará la URL de redirección durante la integración.

Lista de redes permitidas

Esta lista define los requisitos para una comunicación segura entre tu sitio de plantillas y los entornos Expedia. Proporcionaremos rangos de IP de salida de AWS, junto con direcciones IP utilizadas para pruebas locales o en lower-environment. Debes añadir estas IP a la lista de permitidas para asegurarte de que no se bloquea el tráfico entrante desde Expedia.

También tendrás que compartir con nosotros las direcciones IP salientes de tu organización para que podamos añadirlas a la lista de permitidas.

Nota: Si estas IP no se añaden a las listas de permitidas (en uno o ambos lados), habrá problemas de conectividad en las llamadas SSO tanto salientes como entrantes.

Expedia puntos finales

Tendrás que configurar el redirect_uride tu proveedor de identidad con estos valores para habilitar las llamadas de autorización:

  • {WLTP domain}/sso/auth: Punto final de redirección SSO posterior a la llamada de autorización para el flujo de inicio de sesión
  • {WLTP domain}/validateCurrentSession: Punto final de redirección SSO posterior a la llamada de autorización para el flujo silencioso sign-in

Nota: Expedia ha establecido un tiempo máximo de espera de sesión estándar de 60 minutos. Después de 60 minutos, tendrás que actualizar el token.

¿Te ha resultado útil esta página?
¿Cómo podemos mejorar este contenido?
¡Gracias por ayudarnos a mejorar!