Learn-json-web-tokens: Armazenamento na web e aprimoramento progressivo

Criado em 15 out. 2015  ·  9Comentários  ·  Fonte: dwyl/learn-json-web-tokens

Em # 5, # 46 e na maioria das discussões online, as pessoas parecem usar o padrão de armazenamento local / armazenamento de sessão para JWTs, em vez de um cookie. Isso requer o uso de AJAX em todo o aplicativo para que o cabeçalho possa ser definido a partir do armazenamento da web todas as vezes. Meu entendimento é que isso evita falsificações de solicitação entre sites (e está essencialmente aproveitando a política de mesma origem para fazer isso).

Como isso se encaixa com o aprimoramento progressivo, onde alguns dispositivos não oferecem suporte a javascript?

enhancement question

Comentários muito úteis

Não necessariamente, embora isso dependa do seu conjunto de ferramentas. Angular, por exemplo, permite que você defina isso uma vez .. eu acho que você pode até mesmo fazer com jquery facilmente.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Outro problema com os cookies como camada de transporte para tokens é que você está usando 2 tempos limite e não obtém o benefício de evitar problemas de CORS. Os cookies complicam o acesso aos serviços da Web RESTful. É muito mais fácil construir um curl one liner para acessar um recurso com um token do que empacotá-lo em um cookie.

Todos 9 comentários

_Outro_ _GREAT _ Pergunta do _Wizard_! : +1:
Para os fins deste micro-exemplo, acho que é "_Ok_" usar localStorage .
Vamos ser honestos, _todo mundo_ está usando o React atualmente sem se preocupar com acessibilidade.
Todas as crianças legais estão _muito_ mais interessadas em _Shiny New Frameworks_ do que em _Progressive Enhancement _...

Contudo...
Em nosso aplicativo _atual_, estamos usando cookies _precisely_ para compatibilidade com versões anteriores e aprimoramento progressivo.
É por isso que adicionamos a opção JWT2 ... consulte: https://github.com/dwyl/hapi-auth-jwt2#want -to-sendstore-your-jwt-in-a-cookie

Concluindo: eu adicionaria localStorage ao exemplo neste repo e adicionaria comment informando às pessoas que usar cookies para armazenar JWTs é "_Ohkay_" porque você ainda obtém toda a _escalabilidade horizontal_ e segurança benefícios de usar JWTs enquanto economiza o _esforço_ de ter que definir / obter o JWT e adicioná-lo aos cabeçalhos em cada solicitação ...

@rjmk e @nelsonic

há um motivo específico para o JWTS armazenado no armazenamento local ser enviado nos cabeçalhos ou há algo vulnerável / "errado" sobre o uso de https://www.npmjs.com/package/node-localstorage?

@Jbarget você está construindo um "_Universal_" que requer que você tenha acesso a localStorage no servidor? Se esse for o seu caso de uso, o módulo node-localstorage servirá ao seu propósito.
_No entanto_ você ainda terá que _manualmente_ enviar o JWT no header para enviá-lo de volta ao servidor em solicitações "AJAX" ... então não há muita vantagem em usar um _module_ se tudo o que você deseja fazer é obter / definir o token para / de localStorage ...

@nelsonic provavelmente acabaremos definindo-o nos cabeçalhos de cada solicitação, obrigado pela clareza!

@Jbarget , você tem uma _objeção_ para armazenar o JWT em um cookie? (_ simplifica a sua vida ..._)

@nelsonic sem objeção, estou certo em pensar que simplifica minha vida ao ser capaz de acessar os cookies de qualquer lugar no aplicativo, em vez do armazenamento local / por sessão?

Isso simplifica seu aplicativo porque, uma vez que o cookie é _set_ pelo servidor, _todas as solicitações enviadas / recebidas sempre conterão o cookie. o que significa que você _nunca_ precisa _pensar_ sobre isso depois desse ponto.
Por outro lado, armazenar o JWT em localStorage significa que você não pode ter interação não-ajax e deve se lembrar de SET o cabeçalho auth para cada solicitação feita ao servidor. .

Não necessariamente, embora isso dependa do seu conjunto de ferramentas. Angular, por exemplo, permite que você defina isso uma vez .. eu acho que você pode até mesmo fazer com jquery facilmente.

$.ajaxSetup({
   headers: { 'x-my-custom-header': 'some value' }
});

Outro problema com os cookies como camada de transporte para tokens é que você está usando 2 tempos limite e não obtém o benefício de evitar problemas de CORS. Os cookies complicam o acesso aos serviços da Web RESTful. É muito mais fácil construir um curl one liner para acessar um recurso com um token do que empacotá-lo em um cookie.

Este problema está sendo encerrado automaticamente porque tem mais de um ano. Sinta-se à vontade para reabri-lo se ainda for relevante para o seu projeto.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

rhewitt22 picture rhewitt22  ·  5Comentários

NE-SmallTown picture NE-SmallTown  ·  5Comentários

nelsonic picture nelsonic  ·  5Comentários

sarneeh picture sarneeh  ·  3Comentários

alanshaw picture alanshaw  ·  6Comentários