3
respostas

Vantagem de um sistema de login baseado em JWT em relação a um sistema baseado em sessões

Olá! Assistindo uma aula do curso de autenticação com JWT em Node, vi que uma das vantagens de um sistema de login baseado em token é não precisar salvar informações, como o id da sessão, no servidor, impedindo problemas como sobrecarga do servidor. No entanto, em um sistema baseado em token, ainda que não se guarde o id da sessão, é preciso guardar no servidor o que na aula foi chamado de "senha secreta". Assim, a impressão que fica é que, ao final das contas, o sistema baseado em token termina tendo de guardar uma informação no servidor do mesmo jeito. Então qual a vantagem nesse caso de se guardar a senha secreta ao invés do id da sessão?

Obs: eu consigo entender outras vantagens para a segurança da aplicação trazidas pelo sistema baseado em token, mas essa do salvamento de informação no servidor acabou não ficando clara para mim.

3 respostas

Oi Rubens, tudo bem? Acho que algumas podem não terem ficado tão claras. Vamos a alguns pontos.

Quando temos sessão, além de guardar os dados da sessão de cada pessoa, também temos transição de cookies do navegador, só com esses cookies o servidor consegue saber qual sessão pertence a qual usuário, basicamente. E é um dado de sessão por pessoa, 5 pessoas, 5 cookies, 5 espaços de dados de sessão são usados. Outro detalhe é que se você duplicar os servidores da sua aplicação a sessão fica prejudicada por que um servidor pode não ter os dados de uma sessão específica. Neste último ponto, tem formas de resolver, como por exemplo, guardar os dados da sessão em um servidor separado com um banco de dados em memória assim todos os servidores podem obter os dados da sessão de um só lugar.

Por outro lado, temos os token...

Quando temos os tokens, os dados que importam para identificar o usuário ficam no próprio token, não precisamos de espaços de sessão para cada pessoa, pois cada requisição identifica e leva os dados do usuário então, 1 espaço na memória pode ser usado para descobrir quem são as pessoas com sessão ativa. A conta não é bem exata assim, mas serve de exemplo. Você perde a necessidade de ter cookies transitando de um lado para o outro e no caso de você duplicar o servidor da sua aplicação, você não precisa se preocupar com a coisa da session, por que os dados estão no próprio token.

A senha do token estarão em ambos os servidores, sim, mas é um valor tão pequeno que normalmente a gente não pensa no custo dele.

Indo mais além, tem alguns cenários onde você pode ter um serviço externo que autentica os usuários, então ele pode ter a senha e ninguém mais, os demais podem pedir pra esse outro servidor, os dados da sessão prontos.

Ficou mais claro? Com certeza devem ter mais pontos que eu não estou lembrando no momento, mas por hora, consegui pensar nesses. Espero ter ajudado, bons estudos!

Ok, Wanderson. Entendi a questão. Obrigado pela resposta!

Oi Rubens, você pode marcar que esse tópico foi solucionado? Basta clicar em marcar como solução na resposta que te ajudou!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software