Где хранятся токены JWT в этом примере? - PullRequest
2 голосов
/ 01 августа 2020

Я новичок и недавно начал изучать авторизацию и аутентификацию.

Итак, я наткнулся на JWT и начал искать руководства по его реализации в node js. Похоже, есть промежуточное ПО jwt для nodejs под названием «jsonwebtoken».

Я просмотрел несколько видео об этом и узнал, что вы можете получить доступ к созданному токену, открыв заголовок : (req .headers) Видео Я получил информацию от

код

теперь я занимаюсь проблемой где это "заголовок" исходит от и , где это хранится . Это заголовок html или спецефи c повар ie. Я знаю, что есть 3 хранилища (локальное, сессионное и ie хранилище), но в каком из этих 3 оно хранится.

Я действительно запутался

Ответы [ 2 ]

3 голосов
/ 14 августа 2020

Вы тот, кто выбирает, где его хранить: после успешной аутентификации JWT должен быть отправлен клиенту и сохранен на стороне клиента, поэтому, как вы сказали, вы должны выбрать одно из трех решений:

1- LocalStorage

2- Cook ie: уязвим для атак csrf.

3- SessionStorage: этот параметр исключен, потому что как только ваш пользователь закроет свое окно, данные сохраненные здесь, будут потеряны, если вы не хотите этого поведения.

После того, как ваш токен был сохранен, вы снова можете выбрать способ его отправки:

1- Отправить его в заголовке (авторизация) например,

2- Отправьте его прямо в теле запроса (например, в JSON).

Ваш бэкэнд должен знать, как его извлекать из заголовка / тела, ваш выбор снова.

Имейте в виду, что вам нужно отправлять его при каждом запросе, который вы делаете в защищенную область, таким образом вы выполняете аутентификацию без сохранения состояния каждый раз, когда ваш бэкэнд получает запрос в защищенную область.

1 голос
/ 14 августа 2020

Проще говоря, после генерации токена вы отправляете его в качестве ответа либо через повар ie (желательно только через http ie, если вы хотите избежать XSS-атак), либо просто отправляете его в ответе. body, после чего он сохраняется в localStorage (или готовит ie, если вы решили использовать это) и отправляется в последующих HTTP-запросах с заголовком Authorization, значение которого bearer <token>, где хранится jwt в локальном хранилище.

...