Простой пример, чтобы понять, насколько просто интегрировать аутентификацию веб-токена json в приложение узла
Весь код доступен на Github здесь:
https://github.com/FrancescoXX/Node-jwt-authentication
Мы не будем подробно рассказывать, что такое веб-токен Json, но вы можете проверить официальную страницу здесь:
Шаг 0: настройка
Прежде всего, давайте настроим довольно простое приложение узла.
Мы не будем вдаваться в подробности, что такое узловое приложение, но проект будет довольно простым.
Примечание: если вы клонировали этот репозиторий из github:
- npm install (для установки зависимостей)
- узел index.js (для запуска приложения)
Index.js
Здесь мы настраиваем очень простое приложение узла, вызываем bodyparser для анализа тела запроса и решения некоторых проблем CORS.
Затем мы запускаем приложение на порту 3000, смело используйте другой порт, если он уже используется.
Шаг 1. Откройте конечную точку
Давайте сделаем простой запрос к этой открытой конечной точке
[GET] / public / open
маршрут public.js
Контроллер public.js
Ничего особенного, мы просто получаем приветственное сообщение :)
Шаг 2: охраняемая конечная точка
Теперь давайте попробуем сделать GET-запрос к защищенной конечной точке:
[ПОЛУЧИТЬ] / секретный / охраняемый
Приложение нас заблокировало, отправив сообщение об ошибке
Как приложение защищало эту конечную точку?
Давайте взглянем:
secret.js
Да, но
как приложение поняло, что это конечная точка для его защиты?
Ответ заключается в том, что была вызвана функция промежуточного программного обеспечения:
Обратите внимание на часть isAuth, так как она очень важна!
Когда мы получаем запрос, вызывается функция isAuth, которая находится в другом файле (модуле):
isAuth.js
Это промежуточная функция.
Это означает, что когда мы вызываем конечную точку / secret / guarded, мы сначала вызываем эту функцию, и только если мы позволяем это, мы можем продолжить работу со следующей функцией.
Шаг 3. Получите токен
Чтобы получить доступ к «Секретной области», нам необходимо правильно пройти аутентификацию, передав токен в заголовок: Авторизация (конечно, это будет реализовано в Frontend Client, и пользователям не нужно знать, как добавить этот заголовок!)
Давайте вызовем нужную конечную точку с адресом электронной почты и паролем:
auth.js
Для правильной аутентификации мы делаем запрос [POST] в конечной точке / auth / token, отправляя адрес электронной почты и пароль в надлежащем теле.
Как токен создается JWT?
Обратите внимание на эту интересную часть: здесь мы создаем новый токен с некоторым значением, частной строкой, хранящейся на сервере, и сроком действия.
Теперь у нас есть жетон !! Да!
Шаг 4. Аутентификация
Прежде чем пытаться использовать правильный токен, давайте попробуем передать недопустимый токен в заголовке…
Здесь ответ другой: «Токен недействителен».
Мы передаем явно недействительный токен, и скрипт его распознает
но это не подтверждает !!
Наконец, давайте попробуем тот же запрос, вставив в заголовок авторизации правильное значение, которое мы получили с запросом / auth / token…
Мы сделали это!
Это всего лишь пример, но он демонстрирует, как мы можем защитить некоторые конечные точки, запрашивая токен в запросе!
Весь код доступен на Github здесь:
https://github.com/FrancescoXX/Node-jwt-authentication