Não consigo entender o motivo para tornar publicamente as reivindicações / carga útil de um JWT após a decodificação da base64.
Por quê?
Parece que seria muito mais útil criptografá-lo com o segredo.
Alguém pode explicar por que ou em que situação manter esses dados públicos é útil?
security
json
authentication
jwt
eu preciso de ajuda
fonte
fonte
Respostas:
Você escolhe não criptografar a carga pelos mesmos motivos que escolhe não criptografar mais nada: o custo (por menor que seja) excede o benefício e muitos dados simplesmente não precisam ser protegidos dessa maneira.
O que você mais precisa de proteção são as pessoas que violam os dados, para que o registro errado seja atualizado ou a conta corrente de alguém recebe dinheiro que não deveria ter. A assinatura do JSON Web Token realiza isso, porque alterar qualquer parte da combinação de cabeçalho / carga / assinatura invalida o pacote.
Observe que você ainda pode proteger os pacotes na camada de transporte usando SSL.
fonte
O uso do termo assinatura no RFC é análogo a uma assinatura digital em criptografia assimétrica. Na criptografia assimétrica, se o remetente criptografar uma mensagem com sua chave privada, qualquer pessoa que possua a mensagem poderá descriptografá-la com a chave pública do remetente. Portanto, o objetivo com o termo assinatura não é manter uma mensagem em segredo, mas verificar a integridade / remetente da mensagem, que não foi alterada.
No caso de JWTs, o sistema de envio é o criador e consumidor da mensagem (veja o diagrama abaixo), e o objetivo é garantir que o token passado ao usuário não seja violado (por exemplo, privilégios elevados).
E como o @Robert mencionou, os JWTs podem / ainda devem ser criptografados com TLS.
Aqui está uma boa explicação das JWTs e assinaturas das quais a imagem abaixo é originária. 5 etapas fáceis para entender JSON Web Tokens (JWT)
fonte
Para adicionar à resposta de Robert Harveys, há uma desvantagem significativa na criptografia da carga - isso significa que o destinatário do serviço precisa compartilhar um segredo com o servidor de autenticação (a chave de criptografia) para entender se o portador do token está ou não autorizado ou não. Por outro lado, qualquer um pode validar um JWT usando apenas a chave pública publicada pelo servidor de autenticação.
Essa é uma parte essencial da especificação de conexão aberta, pois permite que aplicativos clientes validem tokens de identidade emitidos pelo servidor de autenticação, além de facilitar a implantação de servidores de recursos (pois eles não precisam ser implantados com acesso à criptografia secreta). chave) e também ajuda ao tentar diagnosticar problemas com um JWT emitido.
fonte