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:
Clique na tecla Adicionar
Insira uma descrição
Cole sua chave pública e ative a opção de ativar
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:
Gerar a chave privada
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.keyExtrair 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
kidcampo 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.