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
- 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
- Cliente: No provedor de login externo, configurar um novo client
- Registrar url de redirecionamento autorizada (allowed callback URL): https://reservas.meuexemplo.com/auth
- Habilitar como escopos permitidos:
openid
,profile
,email
- Habilitar o Authorization Code Flow (não suportamos outros fluxos)
- 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
)
- Niara: Cadastrar novo provedor de login
- Acessar https://meuexemplo.admin.niara.tech/identityProviders/new
- Uso do login: B2C
- Tipo de login: OAuth2
- 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
- Niara: Cadastrar nova regra de autenticação
- 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.
- (Cliente) Backend de autenticação gera um Código de Autorização
- (Cliente) Aplicativo cria WebView abrindo a url do Motor Niara de autenticação, incluindo o Código de Autorização no fragmento
- (Niara) Motor Niara solicita ao Backend Niara autenticação do usuário utilizando o Código de Autorização
- (Niara) Backend Niara faz solicitação ao Token Endpoint do backend de autenticação utilizando o Código de Autorização
- (Cliente) Backend de autenticação valida o Código de Autorização e gera um ID Token assinado
- (Niara) Backend Niara recebe ID Token assinado do Token Endpoint
- (Niara) Backend Niara valida a assinatura do ID Token com a chave pública do JWKS URI
- (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