Nodejs Express для веб-приложений JWT с базой данных или сессиями для аутентификации пользователей - PullRequest
0 голосов
/ 30 января 2019

Я разрабатываю NodeJ с сервером Express, и у меня много проблем с аутентификацией JWT, которая считается новым стандартом.

Основная проблема - когда в моем разделе администратора есть администратор.приложение.Я не знаю «хорошего» способа удалить или избежать доступа к токенам клиента.

Я читал о создании БД черного списка с токенами, для которых определено короткое время истечения, но идея в том, чтобы пользователи могли регистрироватьсяв течение нескольких месяцев и не нужно переписывать данные для входа (что-то вроде Facebook).В этом режиме я думаю, что черный список БД будет огромной базой данных.

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

или просто проверяйте все запросы на проверку пользователей БД, если пользователи существуют.Этот метод использует много взаимодействий с БД.

У меня может быть проблема с одним и тем же пользователем с токенами на разных устройствах.

С другой стороны, во внешнем интерфейсе мне придется перемещаться через ajaxили добавление токена динамически ко всем ссылкам href.(Возможно, лучший способ?)

Должен ли я использовать любой из этих методов?Есть ли лучшее решение?Может ли быть лучше использование сеансов?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Во избежание использования дополнительной БД или черного списка, белого списка или какого-либо выхода из системы / удаления контроля пользователя.Проблема может быть решена с помощью jwt с небольшим временем истечения (я использую 15 минут), когда пользователь un playload (очевидно, не пароль).

В каждом запросе я проверяю знак токена и, еслипользователь все еще активен в БД, токен действителен (это решает проблему удаленных пользователей).затем он генерирует новый токен с его 15 новыми минутами истекшего времени, и клиент заменяет токен (более старый только продолжает работать максимум 15 минут)

При выходе клиент удаляет токен (просроченныйМаксимальное время может составлять 15 минут, поэтому я думаю, что это не может быть проблемой безопасности при сохранении окончательности JWT без сохранения состояния)

Когда пользователь удаляется из БД, его токены автоматически отключаются (и в максимумеиз 15 мин. истекает) (важно, чтобы истек срок действия, потому что в будущем может быть зарегистрирован пользователь с таким же именем)

По умолчанию пользователи должны войти в систему при доступе к приложению, но с "«Держите меня в подписи», но мы могли бы решить проблему низкого срока действия токема, надежно сохранив данные на клиенте (я должен изучить, применима ли эта часть).

Это тоже решает проблему с мобильным телефоном внутриwebviews.

0 голосов
/ 30 января 2019

Если вы создаете свой собственный JWT, вы можете хранить информацию такого типа в самом токене.role: 'User' или isAdmin = true.Затем при использовании токена в клиентском приложении, если они не являются администраторами, не показывайте эти страницы.

Убедитесь, что вызовы API на сервере проверяют токен, а также проверяют привилегии .Даже если кто-то использовал свой токен клиентского доступа из Интернета к конечной точке администратора (случайно показанная страница или super hax0rs), сервер должен отказать.

Этот тип подхода работает, если типы доступа меняются не часто, например, «администратор или не администратор».Скорее всего, вы не будете постоянно обновлять пользователей до уровня администраторов.Если вы пытались сделать то же самое для более специфического доступа, который часто меняется, это беспорядок, потому что вам нужно постоянно переиздавать токены или редактировать токены (что сложнее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...