Visão geral do SSO do OAuth 2.0

O OAuth 2.0 é uma estrutura de autorização que permite que aplicativos tenham acesso limitado a contas de usuários em um serviço HTTP. Ele funciona delegando a autenticação de usuário ao serviço que hospeda a conta de usuário e autorizando aplicativos de terceiros a acessar a conta de usuário. O OAuth 2.0 fornece fluxos de autorização a celulares ou tablets e aplicativos para desktop e web.

Saiba mais sobre o OAuth 2.0

SSO básico

Sejam quais forem as opções de recursos selecionadas, o SSO básico requer alguns dados específicos, em especial uma chave pública. Adicionar implementações de cartão de crédito ou programa de fidelidade exige mais informações.

Informações de configuração

Para configurar o acesso de SSO do OAuth 2.0 ao seu modelo de site, alguns elementos são necessários, incluindo:

  • APIs (autorização, token, userProfile)
  • ClientId
  • Segredo do cliente
  • ResponseMode
  • isNonceEnabled
  • customerDetailsAPIKey (se disponível)

Uma implementação padrão de SSO do OAuth 2.0 na Expedia é criptografada usando a nossa chave pública, cria um ponto de extremidade pós-autorização, habilita o nonce e define parâmetros de escopo. Também incluímos informações de usuário.

Autorização

O ponto de extremidade GET /authorize é usado para autenticação e autorização. Ele retorna uma concessão de autorização ao cliente.

CampoDescriçãoTipo de dadosExemplo do valorObrigatório?
client_idIdentifica o cliente. Deve corresponder ao valor pré-registrado no seu provedor de identidade (IDP). Obtido durante o registro manual do cliente ou por meio da API de registro dinâmico do cliente.Sequência Sim
nonceUsado para mitigar ataques de repetição. Esse valor é retornado no token de ID.Sequência Sim
promptO tipo de interação necessário para validação.SequênciaValores válidos:
none
consent
Não
redirect_uriLocal de callback para onde o código de autorização ou tokens devem ser enviados. Deve corresponder ao valor pré-registrado no seu IDP durante o registro do cliente.Sequência Sim
response_typeValor do code (IDP).Sequência Sim
response_modeComo a resposta de autorização deve ser retornada.SequênciaValor válido:
query
Não
scopeToken de acesso, usado para buscar detalhes de perfil. Obrigatório para solicitações de autenticação.SequênciaOpenID, profile e emailSim
stateO estado da interação. Esse valor é retornado no token e permite que o usuário clique, faça a autenticação e retorne à página em que estava interessado. O valor pode conter caracteres alfanuméricos, vírgula, ponto, sublinhado e hífen.Sequência Sim

Parâmetros de resposta

ParâmetroDescriçãoTipo de dadosObrigatório?
codeCódigo de autorização que identifica o cliente. Deve corresponder ao valor pré-registrado no seu IDP. Obtido durante o registro manual do cliente ou por meio da API de registro dinâmico do cliente.SequênciaSim
stateO estado da interação. Esse valor é retornado no token e permite que o usuário clique, faça a autenticação e retorne à página em que estava interessado. O valor pode conter caracteres alfanuméricos, vírgula, ponto, sublinhado e hífen.SequênciaSim

Tokens

O ponto de extremidade POST /token é usado para verificar a identidade do usuário apresentando uma concessão de autorização.

Parâmetros de solicitação

ParâmetroDescriçãoTipo de dadosExemplo do valorObrigatório?
grant_typeO mecanismo que o seu IDP usa para autorizar a criação dos tokens.Sequênciaauthorization_codeSim
redirect_uriEspecifica o local de callback para onde a autorização foi enviada. Esse valor deve corresponder ao redirect_uri usado para gerar o authorization_code original.Sequência Sim
codeCódigo de identificação do cliente recebido na resposta da chamada de /authorize.Sequência Sim

Cabeçalhos de solicitação

ParâmetroDescriçãoTipo de dadosExemplo do valorObrigatório?
acceptDeve ser "application/json".Sequênciaapplication/jsonSim
authorizationCodifica o ID e o segredo do cliente com Base64. Use as informações codificadas no cabeçalho de autorização HTTP.SequênciaBasic<Base64 encoded client ID and secret>Sim
Content-TypeDeve ser "application/x-www-form-urlencoded".Sequênciaapplication/x-www-form-urlencodedSim

Propriedades de resposta

CampoDescriçãoTipo de dados
access_tokenUm token de acesso.Sequência
token_typeO público do token.Sequência
expires_inO tempo de expiração do token de acesso em segundos.Inteiro
scopeOs escopos contidos no token de acesso.Sequência
id_tokenUm identificador que é retornado se o escopo de OpenID for concedido.Sequência

Token de ID

O ID_token é um JSON Web Token (JWT) que inclui partes de informações de autenticação chamadas de declarações. As soluções de modelo da Expedia usam as declarações header, payload e signature.

Declarações de cabeçalho

CampoDescriçãoTipo de dadosObrigatório?
algIdentifica o algoritmo de assinatura digital utilizado, que é sempre RS256.SequênciaNão
kidID da chave: identifica a chave pública usada para verificar o token de ID. A chave pública correspondente pode ser encontrada por meio do JSON Web Key Set (JWKS).SequênciaSim

Declarações de conteúdo

CampoDescriçãoTipo de dadosObrigatório?
amrMatriz JSON de sequências que são identificadores para métodos de autenticação.MatrizNão
audIdentifica o público ao qual o token de ID se destina, ou seja, um dos IDs de cliente do OAuth 2.0 do seu aplicativo.SequênciaSim
auth_timeO tempo em que o usuário final foi autenticado, representado em hora Unix (segundos).InteiroNão
expO tempo em que o token de ID expira, representado em hora Unix (segundos).InteiroSim
iatO tempo em que o token de ID foi emitido, representado em hora Unix (segundos).InteiroNão
idpUm indicador do provedor de identidade.SequênciaSim
issA URL do servidor de autorização que emitiu o token de ID.SequênciaNão
jtiUm identificador exclusivo do token de ID para fins de depuração e revogação.SequênciaSim
subUm identificador exclusivo do sujeito da chamada de autorização, ou seja, o usuário.SequênciaNão
verA versão semântica do token de ID.InteiroSim

Declarações de assinatura

Validação da assinatura: a assinatura será validada em relação à chave apropriada do client_id e do algoritmo.

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. Se você quiser, 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, assim como muitos dos valores. Somente os que são diferentes estão incluídos aqui.

Além das informações de usuário padrão, a configuração do programa de fidelidade inclui os seguintes valores.

programAccount

CampoDescriçãoObrigatório?
programIdIdentificador do programa de fidelidade ao qual o cliente é afiliado ou o nome do nível associado ao programa de fidelidade.Sim
loyaltyAccountNumberNúmero da conta do programa de fidelidade do cliente. Deve ser preenchido somente se um identificador secundário, diferente do membershipId exclusivo, for necessário para operações do programa de fidelidade.Não
lastFourDigitsOfCreditCardÚltimos quatro dígitos do cartão de crédito que o cliente usou na reserva.Não
accountNameNome do programa (se diferente do nome do nível).Não
loyaltyConversionRatioProporção usada para converter o pagamento em pontos ganhos, por exemplo, R$ 1 = 1 ponto.Não
loyaltyAccountBalanceSaldo atual dos pontos de fidelidade ganhos pelo cliente.Sim
valueSaldo do programa de fidelidade, aninhado em loyaltyAccountBalance.Sim
currencyA moeda usada pelo programa de fidelidade, por exemplo, reais, dólares americanos, pontos ou milhas, aninhada em loyaltyAccountBalance.Sim
Esta página foi útil?
Como podemos melhorar esse conteúdo?
Agradecemos por nos ajudar a melhorar.