Каков наилучший безопасный способ получения токена JWT с сервера узлов из приложения javascript без использования формы? - PullRequest
0 голосов
/ 24 сентября 2019

В моем случае у меня есть приложение React (использующее Next), которому необходимо использовать API, предоставляемый приложением node / express / mysql.

Моя идеядолжен был иметь конечную точку (/login) для предоставления токена JWT на основе user / password (который проверяет пользователя в базе данных и создает токен на основе идентификатора пользователя), а затем использует токен JWT дляиспользуйте конечные точки API (эти токены также хранятся в mysql).Но для того, чтобы сделать это, и потому что нет формы, мне нужно было бы сохранить учетные данные (user и password) в клиентском приложении и, следовательно, был бы доступен для чтения любому.Правильно ли я все делаю, а если нет, каковы другие варианты безопасного использования клиентским приложением приложений конечных точек API?

React и Node / Express находятся в одном доменеи CORS устанавливается по умолчанию в соответствии с тем, что я прочитал.Также активируется HTTPS.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

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

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

. Поэтому вы должны создать API /login, это проверит вашего пользователя.учетные данные, а затем передайте ему JWT (в котором говорится, что он является пользователем 'joe', например, с ролью 'admin'), а затем вы проверяете и проверяете этот JWT в своих фильтрах, чтобы аутентифицировать и авторизовать пользователя для действий в вашем веб-приложении

Чтобы получить JWT, пользователь должен предоставить вам свои учетные данные в соединении HTTPS, что сделает само соединение зашифрованным, таким образом защищая его учетные данные от перехвата или атак типа «человек посередине»

0 голосов
/ 24 сентября 2019
  1. генерировать веб-токен
  2. делать шифрование с использованием becrypt npm
  3. сохранять его в БД и cookie на стороне клиента в зашифрованном виде, пока пользователь впервые входит в систему
  4. создайте на промежуточном программном обеспечении, которое напрямую обращается к вашему cookie-файлу и регистрирует вашу базу данных, и долго регистрирует пользователя, если ваш токен cookie совпадает с токеном базы данных.как приведенный ниже пример

  5. пример проекта: https://github.com/karenaprakash/books_review.git

  6. см. это полное приложение

  7. посетить этот проект,Я надеюсь, что это поможет вам.

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