Автор оригинала: FreeCodeCamp Community Member.
Судхеш Шетти
Каждое приложение, которое мы встречаемся сегодня, реализуют меры безопасности, чтобы пользовательские данные не были неправильно использованы. Безопасность всегда то, что меняется и развивается. Аутентификация – одна из необходимых части каждого приложения.
Существуют различные способы аутентификации пользователя. Давайте обсудим аутентификацию на основе токена с помощью приложения Node.js. Для этого мы будем использовать JSON WEB TOKENS.
Что такое JSON Web Tookens (JWT)?
JSON WEB TOKENS (JWT) – это стандарт, который определяет компактный и автономный способ для надежной передачи информации между сторонами в качестве объекта JSON.
- Компактный : Меньший размер, так что легко переносится.
- Самостоятельный: Содержит всю информацию о пользователе.
Как они работают?
Когда пользователь отправляет запрос с требуемыми параметрами, такими как имя пользователя и пароль. Приложение проверяет ли имя пользователя и пароль. При проверке приложение создаст токен, используя полезную нагрузку и секретный ключ. Затем он отправит токен обратно пользователю для хранения и отправки его с каждым запросом. Когда пользователь отправляет запрос с этим токеном, приложение проверяет действительность с той же секретным ключом. Если токен действителен, запрос обслуживается, а приложение отправит соответствующее сообщение об ошибке.
Состав
Основная структура JWT является чем-то вроде
header payload signature
- Заголовок: Он содержит тип токена и алгоритм, используемый для создания подписи. Обучается на Base64.
- полезная нагрузка: Любые пользовательские пользовательские данные, такие как имя пользователя и электронная почта.
- Подпись: Хеш кодированного заголовка, полезной нагрузки и секретного ключа.
Преимущества JWT.
- Одноместный ключ: Нет необходимости в базе данных звонков каждый раз, чтобы проверить пользователь. Один секретный ключ будет декодировать токены, предоставленные любым пользователем.
- Портативный: Тот жетон можно использовать среди различных доменов или разных платформ. Все, что ему нужно, это ключ.
- Легко истекает: Можно установить время срока действия с использованием JWT. После этого времени JWT истекает.
Как мы можем сделать это?
Мы собираемся построить приложение Node.js с несколькими маршрутами и аутентифицируйте их использовать токены. Требуется базовые знания Node.js и JavaScript.
Шаг 1 – Откройте терминал. Начните новый проект в каталоге
cd auth
npm init
Это начнет новый проект. Процесс попросит определенную информацию. Предоставьте все необходимые детали. Процесс создаст Package.json И это будет выглядеть что-то подобное.
{ "name": "auth", "version": "1.0.0", "description": "application to explain authentication", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Your name", "license": "ISC"}
Шаг 2 – Установите зависимости. Снова вернитесь к терминалу и вставьте следующую строку.
npm install express body-parser jsonwebtoken --save
- Экспресс: Node.js Веб приложение Framework.
- Тело-парсер: Получить параметры из нашего запроса на почту.
- jsonwebtoko: Создавать и проверить токены.
После установки зависимостей. Наш Package.json будет выглядеть что-то подобное:
{ "name": "auth", "version": "1.0.0", "description": "application to explain authentication", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Your name", "license": "ISC", "dependencies": { "body-parser": "^1.17.2", "express": "^4.15.3", "jsonwebtoken": "^7.4.1" }}
Шаг 3 – Создать сервер
Давайте создадим сервер, обслуживающий в Port 3000, который отправляет index.html, когда /
Маршрут называется. Мы также создадим /Вход
API, который аутентифицирует пользователя и /GetUsers
API, который дает список пользователей. Давайте создадим фиктивные данные на данный момент и храните его в массиве «пользователей». Вы также можете заменить их вызовами база данных.
Шаг 4 – Построить клиента
Создайте клиент, используя HTML, Bootstrap и JavaScript. Наш клиент имеет две части: экран входа в систему и место для извлечения пользователей. Экран входа будет содержать текстовые поля для электронной почты и пароля и кнопку для отправки запроса. Мы также добавим текстовое поле и кнопку, чтобы пройти токен и получить список пользователей.
Шаг 5 – Начните приложение
node server.js
Наше приложение безопасно?
Нет, вы можете увидеть, что даже если вы не передадите токен, вы можете получить список всех пользователей. Мы еще не реализовали аутентификацию. Давайте добавим аутентификацию на /GetUsers
API, чтобы пользователи с действительным токеном можно получить список пользователей.
Как добавить аутентификацию?
- Включите JWT в файл Server.js.
var jwt=require('jsonwebtoken');
2. Передайте полезную нагрузку (любой объект, вот пропустите сам объект пользователя) и секретную строку, чтобы подписать функцию и создать токен.
var token=jwt.sign(, );
3. Когда токен создан успешно, пройдите то же самое для клиента.
res.json({token:token});
Затем вы можете хранить токен на стороне клиента и каждый раз пропустить его во время аутентификации. Давайте изменим функцию «GetList», чтобы мы могли пройти токен на сервер, когда мы хотим получить доступ к списку пользователей.
Давайте добавим промежуточное программное обеспечение для аутентификации /GetUsers
или любой безопасный маршрут, который добавляется в будущее. Убедитесь, что все маршруты, которые нуждаются в аутентификации, ниже промежуточного программного обеспечения.
В Server.js сначала у нас есть маршрут входа в систему, который создает токен. После этого у нас промежуточное программное обеспечение, которое мы будем использовать, чтобы проверить токен. Все маршруты, которые нуждаются в аутентификации, находятся после промежуточного программного обеспечения. Заказ очень важен.
4. Чтобы декодировать, вы передаете токен и секретный ключ для проверки функции. Функция вернет ошибку, если токен недействителен или успех, если токен действителен.
jwt.verify(token,"samplesecret",(err,decod)=>{ //your logic})
Вызов следующей (), чтобы вызванные соответствующие маршруты.
Final Server.js будет выглядеть так:
Final index.html будет выглядеть так:
Вот и все. Это простой пример того, как использовать токен для аутентификации вашего приложения. Я поставил полный код на Github. Вы можете проверить это там.
sudheeshsetty/jwt_auth Способствовать развитию JWT_AUTH, создав счет на GitHub. github.com.
Спасибо за чтение и следуйте за мной и рекомендуем одинаково для других, нажав на ♡. Моя ручка Twitter – sudheeshettyty Отказ