1
resposta

[Dúvida] Assinatura de JWT com chave privada

Em um cenário onde preciso gerar um par de chaves para me comunicar com a empresa X e seguir com o processo de autenticação e autorização de usuários, compartilhando com ela a chave pública, é uma boa prática assinar o JWT com a chave privada?

Quais as boas práticas em um cenário real?

1 resposta

Olá, Mariana!

Sim, em um cenário onde você precisa gerar um par de chaves para se comunicar com a empresa X e compartilhar a chave pública, assinar o JWT com sua chave privada é uma boa prática.

Aqui está um detalhamento das boas práticas:

1. Gerenciamento de Chaves:

  • Chave Privada: Mantenha sua chave privada extremamente segura. Nunca a compartilhe com a empresa X ou qualquer outra parte. Armazene-a em um sistema de gerenciamento de segredos seguro e dedicado (como HashiCorp Vault, AWS Secrets Manager, Google Cloud Secret Manager, etc.).
  • Chave Pública: Compartilhe sua chave pública com a empresa X. Isso permite que eles verifiquem a assinatura dos seus JWTs e, portanto, a autenticidade deles. A chave pública pode ser distribuída de forma segura através de mecanismos como um endpoint dedicado de recuperação de chaves ou em um certificado digital.

2. Assinatura do JWT:

  • Assine com sua chave privada: Ao gerar um JWT, utilize sua chave privada para assinar o token. Isso garante a integridade e a autenticidade do token. A empresa X utilizará a sua chave pública para verificar a assinatura.
  • Algoritmo de assinatura: Escolha um algoritmo de assinatura criptográfica forte e amplamente suportado, como RS256 (RSA com SHA256) ou ES256 (ECDSA com SHA256). Evite algoritmos considerados inseguros.

3. Validação do JWT (lado da empresa X):

  • Verificação da assinatura: A empresa X deve verificar a assinatura do JWT usando sua chave pública. Se a assinatura for inválida, o token é rejeitado.
  • Validação de claims: Além da assinatura, a empresa X deve validar as claims (reivindicações) contidas no JWT, como o tempo de expiração (exp), o emissor (iss), e quaisquer outras claims relevantes para a autorização.

4. Segurança:

  • HTTPS: Toda comunicação envolvendo JWTs deve ser realizada via HTTPS para proteger contra ataques de interceptação.
  • Atualização de chaves: Implemente um processo para rotular e atualizar regularmente suas chaves privadas. A periodicidade dependerá dos seus requisitos de segurança, mas recomenda-se atualizações regulares.

Bons estudos!