O recurso Single Sign-On (SSO) é um recurso que permite o acesso de áreas restritas sem necessitar realizar login diretamente na área de destino. O acesso é realizado através uma chave única, que é criada através de um serviço existente, como por exemplo, uma intranet interna que já contém o cadastro de clientes.
O TomTicket utiliza JSON Web Tokens (JWT) para realizar a autenticação.
Configurando o Single Sign-On
Antes de utilizar o recurso SSO (Single Sign-On) é necessário primeiramente definir uma chave de autenticação para validar o JWT recebido.
Para criar a configuração, realize os passos abaixo:
- Pelo Painel Administrativo, acesse o menu Gestão > Configurações da Conta > Single Sign-On;
- No campo Tipo de Autenticação defina o valor como Painel do Cliente;
- Em Chave Privada de Autenticação defina uma chave privada que será usada para criptografar o token JWT.
Importante: Jamais divulgue essa chave e mantenha ela sempre em segurança. - Clique no botão Salvar Modificações para adicionar a nova configuração.
Gerando o JWT
Um JWT (JSON Web Token) é um padrão aberto, que gera um token criptografado com informações do usuário. Com ele é possível identificar qual cliente irá realizar o acesso e também definir uma data limite para funcionamento desse token.
O seu servidor deve gerar o token como informado abaixo.
Header
Primeiro defina o cabeçalho da requisição. Ele contém o algoritmo de criptografia.
{ 'alg': 'HS256', 'typ': 'JWT' }
Payload
Defina o payload da requisição. O payload contém a identificação do cliente.
{ 'iss': 'seu-site-dominio.com', 'exp': 1552503274, 'name': 'Nome do Cliente', 'email': '[email protected]', 'userid': 'ID-CLIENTE', 'create': true }
Propriedades:
- iss: domínio que criou o token (obrigatório)
- exp: epoch de expiração do token (não obrigatório)
- name: Nome do cliente (obrigatório)
- email: Endereço de email do cliente (obrigatório se userid não definido)
- userid: Identificador interno do cliente (obrigatório se email não definido)
- create: Booleano indicado se o cadastro do cliente deve ser feito caso não exista
Assinatura
Após definido o Header e Payload, será gerada a assinatura que usará o Header e Payload codificados em base64 e sua Chave Privada.
Essa informações serão concatenadas e criptografadas com um hash HMAC.
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), CHAVE-PRIVADA )
Criando o JWT
A chave JWT será o header codificado em base64, concatenado com o payload codificado em base64 e concatenado com a assinatura. Todas essas informações ao serem concatenadas são separadas por um ponto '.' (sem aspas), como exemplo abaixo:
JWT = base64UrlEncode(header)+"."+base64UrlEncode(payload)+"."+signature
Redirecionamento
Após gerar o token JWT ele deve ser informado na propriedade jwt no script do chat, como exemplo abaixo:
<script type=text/javascript> // <![CDATA[ var url= '<URL DO SCRIPT - NÃO ALTERAR>' + '?id=<IDENTIFICADOR - NÃO ALTERAR>' + '&account=<IDENTIFICADOR - NÃO ALTERAR>' + '&jwt=TOKEN-JWT' ...); //]]> </script>