Gerencie a Autenticação do Usuário

Prev Next

Proteja o widget de fidelidade usando tokens assinados para verificar a identidade do usuário.

O widget de Lealdade usa um JSON Web Token assinado com um par de chaves RS256 para verificar os usuários. Seu backend assina um token usando uma chave privada e uma chave pública correspondente o valida. Isso garante que apenas usuários autorizados possam acessar o widget de fidelidade.

Enviar a Chave Pública

Gerar um par de chaves públicas e privadas RSA. Para enviar a chave pública, vá até a aba Autenticação no Hall de Fidelidade e faça o seguinte:

  1. Clique na tecla Adicionar

  2. Insira uma descrição

  3. Cole sua chave pública e ative a opção de ativar

  4. Clique na tecla Adicionar

A chave pública é usada para verificar a autenticidade de cada token enviado pela sua aplicação.

Gerando um par de chaves RSA

O exemplo a seguir mostra como gerar seu par de chaves públicas e privadas RSA usando OpenSSL:

  1. Gerar a chave privada

    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.key

  2. Extrair a chave pública

    openssl pkey -in private.key -pubout -out public.key

Token e Carga Útil JWT

Cada solicitação feita pelo widget de fidelidade deve incluir um JWT assinado para identificar o usuário e confirmar que sua sessão é válida.

O JWT deve ser gerado no seu servidor seguro de backend usando sua Chave Privada. Uma vez gerado, seu backend deve passar o token para o front-end, que então o fornece para o Xtremepush SDK.

  • Cabeçalho: O cabeçalho define o algoritmo e o tipo de token.

    • alg: Isso deve ser definido para RS256.

    • typ: Isso deve ser configurado para JWT.

    • kid (opcional): Identifica qual chave pública usar para verificar o token. Se você tiver várias chaves públicas carregadas, isso evita verificar o token com todas as chaves e corresponde diretamente à correta. Essa opção é recomendada para ambientes de produção onde você pode rotacionar as chaves ao longo do tempo.

  • Carga útil: A carga útil contém os dados específicos do usuário necessários para a sessão.

    • sub(required): Isso representa o ID de usuário do seu usuário, que é registrado na aba Perfis de Usuário no Gerenciador de Dados.

    • exp (obrigatório): Especifica o tempo de expiração do token como um carimbo de tempo Unix em segundos. Esse valor determina quanto tempo a sessão é válida.

Exemplo de Estrutura JWT (Padrão)

{
  "alg": "RS256",
  "typ": "JWT"
}
{
  "sub": "user_88421",
  "exp": 1741436048
}

Exemplo de Estrutura JWT com ID de Chave

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "primary"
}
{
  "sub": "user_88421",
  "exp": 1741436048
}

Melhores Práticas de Segurança

  • Chave privada: Nunca codifique ou exponha sua chave privada em código frontend, aplicativos móveis ou controle de versão. A chave privada concede acesso para gerar tokens para qualquer usuário. Sempre gere tokens no seu servidor seguro de back-end.

  • Rotação de chaves: Faça upload de múltiplas chaves públicas na aba Autenticação para suportar a rotação de chaves. Use o kid campo de cabeçalho para identificar qual chave assinou cada token.

  • Vencimento do token: Defina tempos de expiração apropriados e implemente lógica de atualização de token para evitar interrupções de sessão.

  • Testes: Use uma ferramenta JWT para decodificar e verificar tokens de teste durante o desenvolvimento. Cole sua chave pública na seção de verificação para validar assinaturas.

Mapeamento de Perfis de Usuário

Quando seu usuário abre o widget de fidelidade, a plataforma usa o ID de usuário do token para identificar seu perfil. Esse perfil é então adicionado à aba Todos os Usuários dentro do Hub de fidelidade com o mesmo ID de usuário.

Para completar esse mapeamento, você deve finalizar a configuração do SDK. A configuração do SDK é necessária para carregar o widget e passar o token.

Os usuários só são mapeados para a aba Todos os Usuários depois que você disponibiliza seu widget publicamente.