JWT para autenticar usuários nos suplementos ASAP

JWT para autenticar usuários nos suplementos ASAP

Introdução

Com base no fato de escolherem fazer login no complemento ASAP ou não, os usuários finais podem ser classificados como usuários convidados e usuários autenticados. Aqueles que optam por não fazer login são chamados de usuários convidados e aqueles que optam por fazer login são chamados de usuários autenticados. No complemento ASAP, você pode definir qual componente e conteúdo será visível para cada tipo de usuário. 

Os usuários convidados podem acessar a base de conhecimento, enviar um ticket, exibir postagens na comunidade de usuários e conversar com seu agente de suporte ao cliente.  

Por outro lado, os usuários autenticados podem acessar a base de conhecimento, enviar um ticket, visualizar os tickets que eles enviaram, bater papo com seu agente de suporte ao cliente e participar ativamente da comunidade de usuários (com direitos para executar ações, como seguir um tópico , adicionando um tópico e adicionando um comentário às postagens existentes). 

Por que uma JWT é necessária?

O complemento ASAP, embora fornecido pelo Zoho, não é um aplicativo independente; Ele funciona em conjunto com seu aplicativo principal, capacitando-o com a funcionalidade da Central de Ajuda. Quando os usuários finais fazem login no seu aplicativo, eles desejam acessar todos os recursos associados, incluindo a Central de Ajuda, por meio de um único login. Ter que fazer login no aplicativo com um conjunto de credenciais e precisar fazer login na Central de Ajuda com outro conjunto de credenciais - porque os serviços poderiam estar usando métodos de autenticação diferentes - incomoda os usuários finais. É aqui que o JSON Web Token (JWT) entra em ação.

A autenticação de usuário baseada em JWT é possível somente se o SSO (Single Sign-On - Logon único) por meio de autenticação remota estiver ativado no portal do Zoho Desk. O SSO garante que os usuários finais não precisem usar credenciais de login diferentes para acessar os diferentes sistemas de suporte que você possui. Se o SSO não estiver ativado, os usuários finais poderão acessar o complemento ASAP apenas como usuários convidados.

O que é JWT?

A Força-Tarefa de Engenharia da Internet, o órgão que criou o  padrão JWT , define a JWT como "um meio compacto e seguro de URL de representar reivindicações a serem transferidas entre duas partes". 

No contexto do complemento ASAP, o JWT é o mecanismo que verifica a autenticidade de um usuário do aplicativo principal e fornece permissão para usar o centro de ajuda orientado a ASAP com as mesmas credenciais.  

Figura 1: Implementação do JWT no complemento ASAP

Pré-requisitos para ativar o JWT

Os dois componentes a seguir são essenciais para a autenticação baseada em JWT:
  • Ponto final do JWT
  • Segredo da JWT

Extremidade do JWT : Este é um terminal do servidor que você deve configurar antes de configurar a autenticação do JWT para o complemento ASAP. Esse terminal deve conter o código que gera o JWT e é esse terminal no qual o servidor IAM envia a solicitação GET contendo o token do usuário. Certifique-se de fornecer um URL válido para o terminal JWT ao configurar o complemento no Zoho Desk. 

Veja um exemplo de uma URL de redirecionamento do JWT -  https://safe-forest-77068.herokuapp.com/getjwt?user_token=token

O terminal JWT também deve executar constantemente o programa a seguir com o segredo JWT gerado para o seu complemento. 
import io.jsonwebtoken.SignatureAlgorithm;
import javax.crypto.spec.SecretKeySpec;
import java.security.Key;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import java.io.UnsupportedEncodingException;
 
 
public static String generateJwt (String userToken) lança o UnsupportedEncodingException {
 String secretKey = ""; // Esse valor será dado quando o complemento for criado. Em seguida, substitua o valor fornecido aqui
long notBeforeMillis = System.currentTimeMillis ();
long notAfterMillis = notBeforeMillis + 300000;
 
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
 
byte [] apiKeySecretBytes = secretKey.getBytes ();
Key signingKey = new SecretKeySpec (apiKeySecretBytes, signatureAlgorithm.getJcaName ());
 
Construtor JwtBuilder = Jwts.builder (). SignWith (signatureAlgorithm, signingKey);
 
String jwt = builder.claim ("email_verified", true)
.claim ("not_after", notAfterMillis)
.claim ("not_before", notBeforeMillis)
.claim ("email", <user_email_address_from_user_token>). compact ();
return jwt;
 
  • userToken é um parâmetro de entrada que considera o token do usuário recebido do aplicativo. Este parâmetro carrega os detalhes do usuário logado no aplicativo. Portanto, verifique se o token do usuário está criptografado quando é enviado do aplicativo para o servidor IAM do Zoho e, em seguida, para o endpoint do JWT. É no ponto de extremidade do JWT que o token do usuário deve ser descriptografado e verificado quanto à sua autenticidade. 
  • O  parâmetro email retorna o endereço de email do usuário. 
  • O  parâmetro email_verified é um parâmetro booleano que retorna se o endereço de e-mail é verificado ou não e, subsequentemente, envia o token OAuth para o complemento ASAP. 
  • Os  not_before e  not_after parâmetros definem a duração após a qual o JWT expira. O valor desses parâmetros deve estar no formato Tempo Universal Coordenado (UTC) e ser expresso em milissegundos. 
  • Para garantir uma segurança forte, certifique-se de que a diferença de tempo entre os parâmetros not_before e not_after não exceda 600000 milissegundos (10 minutos). 

Segredo da JWT : O segredo da JWT é um código exclusivo compartilhado quando você configura o complemento ASAP no Zoho Desk. Ele é usado para assinar detalhes do usuário depois que o terminal JWT verifica o token do usuário que recebe do servidor IAM. Esta parte assinada de dados é chamada de resposta do JWT. 
 
O segredo da JWT é compartilhado apenas uma vez - no momento do registro do complemento.Portanto, certifique-se de armazenar o segredo em um local altamente seguro e não o compartilhe com nenhuma parte não confiável.

Como funciona um JWT?

Quando um usuário tenta efetuar login no complemento ASAP usando as credenciais do aplicativo principal, o aplicativo envia seu ID de cliente, segredo de cliente e token de usuário para o servidor IAM do Zoho para verificação. 
 
Se o servidor IAM encontrar as credenciais válidas, ele enviará o token do usuário e uma solicitação de usuário GET ao ponto de extremidade do JWT, por meio do URL de redirecionamento do JWT. 
 
Em seguida, o ponto de extremidade do JWT verifica o token do usuário por sua autenticidade. Após esta verificação: 
se o token do usuário for válido, a resposta do JWT contendo detalhes do usuário (ID de email do usuário, status de verificação de email, intervalo de tempo de login) será assinada com o segredo do JWT e enviada de volta ao servidor IAM
  • se o token do usuário for inválido, a resposta do JWT será enviada de volta com o valor doparâmetro email_verified configurado como false
  • Se o servidor IAM receber uma resposta válida do JWT, ele enviará o token OAuth2 que finalmente considera o usuário final como um usuário do portal de suporte técnico. 
No caso do complemento ASAP, razões de segurança determinam o uso do método GET e não qualquer outro método para buscar o JWT. 

Pontos-chave para lembrar

  • Você pode alterar o URL do JWT a qualquer momento na página de configuração. 
  • O URL deve incluir um parâmetro chamado "user_token" para passar as informações do usuário para o servidor JWT. 
  • A resposta do JWT deve ser retornada como uma cadeia simples. 
  • A resposta do JWT deve conter os  parâmetros email ,  email_verified ,  not_before e  not_after .
  • Uma mudança no tempo de servidor de aplicativo pode afetar os valores definidos para a not_before e  not_after params. Portanto, certifique-se de modificar o código JWT também quando a hora do servidor de aplicativos for alterada.  
  • Atualmente, apenas o algoritmo HMACSHA256 é suportado para assinatura. 








Leia também:
Trabalhando com o ASAP SDK para Android                                                                                                                                                                                  

    • Related Articles

    • Gerenciando usuários da Central de Ajuda

      Os usuários da Central de Ajuda são usuários que preferem encontrar soluções lendo os artigos da sua base de conhecimento ou as postagens da comunidade. Quando não conseguirem encontrar respostas, podem resolvê-lo junto aos seus agentes, enviando um ...
    • Por que meus artigos do KBase não são visíveis para os usuários finais?

      Em geral, para um artigo de conhecimento ser acessível para usuários finais, as seguintes condições devem ser atendidas: I. Tornar a guia da base de conhecimento visível na Central de Ajuda Você quer ter certeza de que tornou a guia "Base de ...
    • Configurando o Zoho Desk para JIRA

      A integração do JIRA permite que sua equipe de suporte ao cliente e a equipe de produtos trabalhem juntas para obter maior produtividade. Seus agentes podem enviar tickets como problemas no Zoho Desk, enquanto os engenheiros podem gerenciar seu P & D ...
    • Adicionando e gerenciando seus usuários do Zoho Desk

      Agentes são as pessoas que lidam com tickets e trabalham com problemas do cliente. Eles realizam uma ampla gama de ações, como responder aos clientes, editar detalhes de ingressos, fechar tickets, transferir passagens entre departamentos, etc. Você ...
    • Configurando o Zoho Desk para G Suite

      Você está usando o G Suite (antigo Google Apps ) para negócios? Agora você pode facilitar a colaboração das equipes de negócios e o compartilhamento de informações, configurando o Zoho Desk for G Suite. Benefícios Importe facilmente seus contatos de ...