Как правильно использовать JWT? - PullRequest
2 голосов
/ 14 июля 2020

История

Возраст сессий-куки : насколько я знаю, JWT использует для уменьшения запросов к БД. сеансы обычно хранятся в БД, и все запросы требуют запроса для аутентификации запроса. Для небольших веб-сайтов и веб-приложений это не проблема, но для больших приложений производительность очень важна.

JWT Rise : с JWT вы можете пропустить этот шаг (запрос к БД для аутентификации) и используйте действующий JWT, который подписывается с вашим сервером. Вы должны отправлять токен JWT во всех запросах в заголовке, но если этот токен украден, вор может использовать его для аутентификации навсегда. это как пользователь может. Теперь вы можете уменьшить время истечения срока действия (например, 10 минут), чтобы защитить пользователей, но после истечения срока действия токена реальные пользователи должны войти в систему с пользователем и паролем, и это кошмар.

Refre sh Token is born : Теперь мы можем смешать JWT с концепцией cook ie. refre sh токены хранятся в БД, и вы можете контролировать это с помощью входа в систему и выхода из системы. после истечения срока действия токена доступа (токена JWT с коротким возрастом) клиенты отправляют запрос в некоторую конечную точку для обновления sh токена доступа на этом сервере конечной точки, проверяют БД и ищут токен refre sh. если refre sh токен в белом списке (или не в черном списке), сервер генерирует новый токен доступа и возвращается клиентам. Теперь вы можете хранить токен доступа в памяти и обновлять токен sh в локальном хранилище или что-то вроде этого.

XSS-атака : локальное хранилище небезопасно, и с помощью XSS-атак хакеры могут украсть ваш локальное хранилище.

httpOnly cookies : вы можете хранить токены JWT в httpOnly cookies. httpOnly cookies устанавливаются с сервера, и клиенты не могут получить к ним доступ из JS.

CSRF-атака : Новая проблема с httpOnly cookies - CSRF-атака. Атаки CSRF происходят из сессий-cook ie age.

Мой подход

Refre sh токены очень похожи на файлы cookie, и теперь мы используем cook ie и токен доступа JWT вместе - это традиционный токен JWT, а токен Refre sh - это традиционный токен сеанса. каждые 10 минут (возраст JWT в моем примере) мы входим в систему с помощью токена refre sh (или токена сеанса), и между ними мы используем токены доступа.

Если пользователи отправляют 100 запросов каждые 10 минут, мой запрос БД для уменьшение аутентификации 100x

СЕЙЧАС Мой вопрос

Я понял, как использовать JWT?

1 Ответ

1 голос
/ 14 июля 2020

Хорошее объяснение, я думаю, вы его хорошо понимаете.

Чтобы добавить к своему объяснению, вы можете повернуть refre sh tokens : после refre sh token используется для получения нового токена доступа, возврата нового токена refre sh и аннулирования старого. Это предотвратит использование его тем, кто получил доступ к старому токену refre sh.

...