Visão geral do SAML v2
O Security Assertion Markup Language (SAML) é um formato de SSO padrão. A sua estrutura com base em XML permite uma autenticação otimizada com troca de informações por meio de documentos XML assinados de modo digital. O SAML v2, ou SAML 2.0, é o protocolo padrão para habilitar o SSO entre domínios com base na web desde 2005.
SSO básico
Sejam quais forem as opções de recursos selecionadas, os requisitos de configuração do SSO básico são os mesmos. Adicionar implementações de cartão de crédito ou programa de fidelidade exige mais informações.
Requisitos de configuração
Para configurar o acesso de SSO do SAML ao seu modelo de site, alguns elementos são necessários, incluindo:
- Certificados de chave pública para verificação de assinatura
- Público
- Emissor
- Informações do ponto de extremidade
- IPs para adicionar à lista de permissões
- Informações de suporte do fluxo de hóspedes (isPassive)
Uma implementação padrão de SSO do SAML na Expedia faz a criptografia usando a nossa chave pública, cria um ponto de extremidade de destino e duplica a sua lista de IPs permitidos para proteção contra ataques de interrupção.
Requisitos técnicos:
- SAML 2.0 em uso no seu site
- A sua chave privada deve ser usada para assinar toda a resposta do SAML e o conteúdo do SAML deve ser codificado em Base64
- A chave pública da Expedia será usada para criptografar asserções
- Preencha os valores de assinatura de acordo com o padrão do SAML v2
- Inclua o destino e o destinatário na sua resposta do SAML
- Inclua o emissor na resposta do SAML para que possamos buscar o certificado apropriado
Detalhes de conteúdo
Depois que o cliente faz login por meio do seu provedor de identidade (IdP), uma resposta gerada chamada de conteúdo é enviada ao seu site principal para autenticação. Se a autenticação é bem-sucedida, o cliente recebe acesso. O conteúdo que fornecemos inclui os seguintes campos. Não exigimos todos esses campos, mas usamos alguns deles na experiência do usuário (por exemplo, para exibir o nome do cliente em uma mensagem de boas-vindas) e outros como parte da verificação.
Campo | Descrição | Obrigatório? |
---|---|---|
membershipId | Identificador único da conta do cliente. | Sim |
relayState | URL para o qual o cliente será redirecionado assim que a verificação for concluída. | Sim |
languageID | Os idiomas em que o site vai poder ser visualizado. | Não |
channelType | Plataformas para as quais o site é otimizado (valores: WEB, MOBILE, TABLET). | Não |
firstName | Nome do cliente. | Sim |
middleName | Nome do meio do cliente. | Não |
lastName | Sobrenome do cliente. | Sim |
email | Endereço de e-mail do cliente. | Sim |
Inclusão de programas de fidelidade
Como parte do seu modelo de site, você pode oferecer aos seus clientes a capacidade de juntar pontos de fidelidade nas compras de viagens. O seu modelo também pode permitir que clientes usem pontos de fidelidade acumulados para comprar viagens.
Os mesmos requisitos de configuração da implementação padrão se aplicam.
Detalhes de conteúdo
Além dos atributos descritos na implementação padrão, a funcionalidade de ganho e uso de recompensas de fidelidade requer os seguintes atributos de conta (ProgramAccount).
Campo | Descrição | Obrigatório? |
---|---|---|
programId | Identificador do programa de fidelidade. | Sim |
programAccountNumber | O número da conta do programa ao qual o cliente é afiliado, também chamado de loyaltyAccountNumber . | Não |
lastFourDigitsOfCreditCard | Últimos quatro dígitos do cartão de crédito que o cliente usou na reserva. | Não |
accountName | Nome da conta do programa. | Não |
loyaltyConversionRatio | Proporção usada para converter o pagamento em pontos ganhos, por exemplo, R$ 1 = 1 ponto. | Não |
loyaltyAccountBalance | Saldo atual dos pontos de fidelidade ganhos pelo cliente. | Sim |
Restrição do cartão de pagamento
Podemos configurar o seu site para que clientes usem o cartão de crédito da sua organização para fazer reservas. Isso é opcional, pois todas as soluções de modelo podem aceitar todos os principais cartões de crédito ou débito (e, nos EUA, PayPal).
Segurança e armazenamento do cartão de crédito
Se você optar por exigir a compra usando o cartão de crédito personalizado da sua organização, queremos que sinta segurança. Lidamos com isso das seguintes maneiras:
- As informações do cartão são armazenadas em um formato tokenizado que é vinculado ao perfil do cliente na Expedia. O armazenamento nunca é feito sem criptografia.
- Nenhum ser humano tem acesso aos dados não criptografados do cartão, e a descriptografia só acontece com credenciais seguras do IAM.
- Quando um cartão é pré-carregado na página de pagamento, somente a descrição do cartão fica visível, não o número.
- O cliente deve inserir o código de segurança do cartão para concluir a reserva com o cartão armazenado.
Requisitos de configuração
Além dos requisitos de configuração da implementação padrão, adicionar o cartão de crédito significa que mais uma camada de segurança será necessária. Para isso, vamos precisar de:
- Um ponto de extremidade a ser usado para o parâmetro AuthnRequest
- A sua chave pública para verificação de assinatura
Vamos usar a chave privada da Expedia para assinar o conteúdo do AuthnRequest e compartilhar a nossa chave pública para fazer a validação de assinatura no seu lado.
Detalhes de conteúdo
Junto com os atributos descritos na implementação padrão, quando um cliente faz login no seu site, enviamos um conteúdo de resposta do SAML codificado com asserções assinadas e criptografadas para o ponto de extremidade seguro de SSO da Expedia.
O conteúdo também vai conter os seguintes dados do cartão de crédito:
Campo | Descrição | Obrigatório? |
---|---|---|
cardNumber | O número do cartão a ser cobrado. | Sim |
cardType | Tipo de cartão usado (por exemplo, Visa, MasterCard, American Express). | Sim |
expirationDate | Data de validade do cartão usado. | Sim |
addressCategoryCode | O tipo de endereço de cobrança associado ao cartão usado (por exemplo, residencial ou comercial). | Sim |
firstAddressLine | Primeira linha do endereço de cobrança. | Sim |
secondAddressLine | Segunda linha do endereço de cobrança. | Não |
thirdAddressLine | Terceira linha do endereço de cobrança. | Não |
cityName | Cidade do endereço de cobrança. | Sim |
provinceName | Estado ou província do endereço de cobrança. | Sim |
postalCode | Código postal do endereço de cobrança. | Sim |
countryCode | Código do país do endereço de cobrança. | Sim |
AuthnRequest
A Expedia envia os parâmetros AuthnRequest
e RelayState
para o seu ponto de extremidade quando um usuário não autenticado acessa o seu modelo de site. Isso solicita que o usuário faça login, o que inicia o processo de SSO.
Os elementos AuthnRequest
incluem:
Campo | Descrição | Obrigatório? |
---|---|---|
AssertionConsumerServiceURL | URL para o modelo de site da Expedia após o usuário fazer login. | Sim |
Destination | URL do seu ponto de extremidade para publicar o AuthnRequest. | Sim |
Issuer | A origem dos dados. Valores: Expedia-Test ou Expedia-Prod. | Sim |
Signature | Assinatura de SSO a ser validada pelo seu site principal. | Sim |
Para mais informações, confira o nosso exemplo de conteúdo.