Skip to main content

Autenticação/SSO

Introdução

O Motor Niara pode ser integrado a um provedor de login. Essa feature pode ser usada para atender cenários como:

  • Funcionários de uma empresa ganham acesso a tarifas exclusivas após o login integrado com a conta Microsoft ou Google da empresa
  • Clientes de um hotel que são participantes de um programa de fidelidade podem acessar tarifas exclusivas ou utilizar saldo de cashback acumulado após o login
  • OTA possui seu próprio site e quer criar um link em que o usuário acessa o Motor Niara já autenticado
  • Cliente possui um aplicativo e quer integrar o Motor Niara como um WebView - e deseja que o usuário já entre autenticado

A gestão de usuários pode ser feita de três formas:

  • Conta Niara: a gestão de usuários é feita dentro do módulo de clientes B2C da Niara. Ideal para clientes que estão iniciando seu programa de fidelidade, ou que fazem gestão de forma manual.
  • OAuth2.0/OpenID: o cliente já utiliza uma plataforma de usuários ativa que atende ao protocolo OpenID. Só suportamos o Authorization Code Flow
  • Integração customizada: Temos integração customizada com Fidelimax e TS Explorer

Implantação

Descrevo abaixo alguns cenários e o procedimento para sua configuração.

Integração com provedor de login OpenID

Cliente possui uma base de usuários em uma plataforma que implementa o protocolo OpenID. Google Workplace e Microsoft (Entra AD) são exemplos compatíveis com esse protocolo.

O Motor apresentará no menu de navegação a opção de realizar o Login. Ao clicar nesta opção, o visitante será redirecionado à tela de login do provedor de login (authorization_endpoint). Após preencher o login e senha, o visitante será redirecionado de volta ao Motor, autenticado.

Se o provedor de login do cliente não implementa o protocolo OpenID (ex, o cliente desenvolveu a sua própria solução de autenticação), o cliente pode desenvolver o protocolo parcialmente, criando apenas os endpoints necessários.

Pré requisitos

Configuração

  1. Cliente: No provedor de login externo, configurar um novo client
    1. Registrar url de redirecionamento autorizada (allowed callback URL): https://reservas.meuexemplo.com/auth
    2. Habilitar como escopos permitidos: openid, profile, email
    3. Habilitar o Authorization Code Flow (não suportamos outros fluxos)
    4. Anotar os seguintes dados, necessários para as próximas etapas:
      • Client ID
      • Client Secret
      • Endpoint para token (token_endpoint)
      • Endpoint para autorização (authorization_endpoint)
      • Endpoint para consulta às chaves jwks (jwks_uri)
  2. Niara: Cadastrar novo provedor de login
  3. Niara: Cadastrar nova regra de autenticação
  4. Niara: Configurar a regra de autenticação nova para o motor correspondente ao motor

Integração de Motor dentro de aplicativo com WebView

Cliente possui um aplicativo para iOS ou Android, e quer integrar o Motor como uma WebView. O usuário do aplicativo já fez o cadastro e o login no aplicativo. Ao abrir o Motor dentro da WebView, ele deve ter a experiência de um usuário logado - os campos do hóspede principal/ solicitante já devem vir preenchidos com o nome, endereço e e-mail, ele pode visualizar suas viagens anteriores, seu saldo de cashback, etc.

Arquitetura da solução

A autenticação do usuário é feita com os seguintes passos.

  1. (Cliente) Backend de autenticação gera um Código de Autorização
  2. (Cliente) Aplicativo cria WebView abrindo a url do Motor Niara de autenticação, incluindo o Código de Autorização no fragmento
  3. (Niara) Motor Niara solicita ao Backend Niara autenticação do usuário utilizando o Código de Autorização
  4. (Niara) Backend Niara faz solicitação ao Token Endpoint do backend de autenticação utilizando o Código de Autorização
  5. (Cliente) Backend de autenticação valida o Código de Autorização e gera um ID Token assinado
  6. (Niara) Backend Niara recebe ID Token assinado do Token Endpoint
  7. (Niara) Backend Niara valida a assinatura do ID Token com a chave pública do JWKS URI
  8. (Niara) Backend Niara grava cadastro da pessoa autenticada a partir dos dados do ID Token (nome, sobrenome, e-mail, data de aniversário e número de telefone)

Pré-requisitos

  • O sistema de login utilizado pelo aplicativo precisa implementar os seguintes endpoints
    • token_endpoint: converte Código de Autorização em um ID Token e Access Token (precisamos só do ID Token)
    • jwks_uri: retorna chaves públicas utilizadas na assinatura do ID Token. URL precisa ser no formato {issuer}/.well-known/jwks.json
  • Cliente possui instalação Niara (ex: https://meuexemplo.niara.tech)
  • Motor Niara cadastrado, parcialmente configurado
  • URL do Motor definida (ex: https://reservas.meuexemplo.com)

Configuração

A configuração é a mesma da descrição da integração com OpenID. Não é necessário configurar o authorization_endpoint, pois a integração do aplicativo vai "pular" esta etapa.

Implementação da WebView

Para abrir a WebView com o usuário já autenticado, montar a url no seguinte formato:

https://<URL do Motor>/auth/oauth2#code=<Código de Autorização>&identityProviderId=<identityProviderId>&authenticationRuleId=<authenticationRuleId>

Onde identityProviderId e authenticationRuleId são os ids do provedor de login e da regra de autenticação cadastrados no Niara