Skip to main content

Autenticação/SSO

Introdução

O Front Niara/Central de Reservas pode ser integrado a um provedor de login que implementa o protocolo OAuth2. Essa feature pode ser usada para atender cenários como:

  • Um colaborador de agência se autentica em outro sistema. Esse sistema exibe um botão/link que direciona ao Front Niara/Central de Reservas. O usuário já acessa o sistema logado, ou precisa completar um segundo fator de autenticação (preencher um código enviado para o e-mail). Mais importante, não precisa ter um novo username/senha.

Implantação

Integração com provedor de login OAuth2.0

Documentação de referência ao protocolo OAuth2.0: https://oauth.net/2/

Damos suporte ao fluxo de autorização por código (Authorization Code Flow).

Arquitetura da solução

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

  1. (Cliente) Usuário faz login no sistema do cliente
  2. (Cliente) Provedor de login gera um Código de Autorização
  3. (Cliente) Provedor de login redireciona usuário para a Central de Reservas/Front Niara, passando o Código de Autorização na URL (ex: https://meuexemplo.niara.tech/sso/auth?code=XXX&authenticationRuleId=YYY&identityProviderId=ZZZ)
  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 busca ou cria cliente/usuário de acordo com as claims contidas no ID Token (nome, sobrenome, e-mail, CNPJ)

Pré requisitos

  • O sistema de login do cliente precisa implementar os seguintes endpoints previstos no protocolo OAuth2.0
    • 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)

Configuração

  1. Cliente: No provedor de login externo, configurar um novo client
    1. Registrar url de redirecionamento autorizada (allowed callback URL): https://meuexemplo.admin.niara.tech/sso/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
    • Acessar https://meuexemplo.niara.tech/identityProviders/new
    • Uso do login: Usuário de Cliente da Instalação
    • Tipo de Cliente: Cliente Dinâmico
    • Preencher campos Client ID, Cliente Secret, Endpoint para token, Endpoint de autorização e Endpoint para consulta às chaves jwks com os dados específicos fornecidos pelo cliente
  3. Niara: Cadastrar nova regra de autenticação
  4. Niara: Configurar a regra de autenticação nova para o motor correspondente ao motor
  5. Niara: Anotar authenticationRuleId e identityProviderId