NodeJS

Как авторизовать пользователей с помощью Google OAuth в Node.js

Как авторизовать пользователей с помощью Google OAuth в Node.js

Открытая авторизация, также известная как OAuth, - это протокол, используемый для авторизации пользователя на вашем веб-сайте с помощью сторонних сервисов, таких как Google, Github, Facebook и т. Д. Сторонний сервис предоставляет некоторые данные (имя, адрес электронной почты, изображение профиля и т. Д.).) с вашим веб-сайтом, а затем авторизует пользователя от своего имени, не управляя паролями и именами пользователей для вашего веб-сайта, и избавляет пользователей от множества дополнительных проблем.

Как работает OAuth

Когда пользователь нажимает «Войти через Google», пользователь попадает на страницу согласия Google OAuth. Когда пользователь соглашается на согласие и аутентифицирует свою личность в Google, Google свяжется с вашим веб-сайтом в качестве сторонней службы, авторизует пользователя от своего имени и поделится некоторыми данными с вашим сайтом. Таким образом, пользователь может быть авторизован без отдельного управления учетными данными для вашего веб-сайта.

Реализация Google OAuth с использованием Node.js

Почти все языки программирования предоставляют разные библиотеки для реализации google oauth для авторизации пользователей. Узел.js предоставляет библиотеки "паспорт" и "паспорт-google-oauth20" для реализации google oauth. В этой статье мы реализуем протокол oauth для авторизации пользователей на использование узла.js.

Создать проект в Google

Первым шагом к реализации Google OAuth является создание проекта в консоли разработчика Google для вашего веб-сайта. Этот проект используется для получения ключей API, используемых для запросов в Google для открытой аутентификации. Перейдите по следующей ссылке и создайте свой проект.

https: // консоль.Разработчики.Google.ком

Настройка Google Project

После создания проекта войдите в проект и выберите «Экран согласия OAuth» в меню слева.

Нажмите кнопку «Создать» и предоставьте всю информацию о своем проекте. Нажмите «Сохранить и продолжить», чтобы продолжить.

Теперь укажите объем вашего проекта. Области - это типы разрешений на доступ к данным пользователя из учетной записи Google. Вам необходимо настроить разрешения для получения определенных пользовательских данных из вашей учетной записи Google. Нажмите «Сохранить и продолжить».”

Теперь добавьте тестовых пользователей в проект, если хотите. Только тестовые пользователи могут получить доступ к вашему веб-приложению в тестовом режиме. На данный момент мы не будем вводить какого-либо тестового пользователя и нажать «Сохранить и продолжить», чтобы перейти на страницу сводки проекта.

Просмотрите свой проект на сводной странице и сохраните конфигурацию. Теперь мы сгенерируем учетные данные для нашего проекта. Выберите вкладку «Учетные данные» в меню слева и нажмите кнопку «Создать учетные данные» вверху, чтобы сгенерировать OAuth 2.0 идентификаторов клиентов.

В раскрывающемся меню выберите «Идентификатор клиента OAuth» и укажите тип приложения как «Веб-приложение» и имя вашего приложения.

На той же странице мы должны предоставить два URI: «Авторизованные источники Javascript» и «URI авторизованного перенаправления». «Авторизованные источники javascript» - это HTTP-источник вашего веб-приложения, и он не может иметь никакого пути. URI авторизованного перенаправления - это точный URI с путем, по которому пользователь будет перенаправлен после аутентификации Google.

После ввода всех необходимых записей нажмите «создать», чтобы создать учетные данные OAuth.

Инициирующий узел.js Project

На данный момент мы создали проект Google для авторизации пользователей для нашего приложения с помощью Google. Теперь мы собираемся запустить узел.js для реализации oauth. Создайте каталог с именем auth и запустите экспресс-проект.

[электронная почта защищена]: ~ $ mkdir auth
[электронная почта защищена]: ~ $ cd auth
[электронная почта защищена]: ~ $ npm init -y

Установка необходимых пакетов npm

Чтобы реализовать Google OAuth с помощью узла.js нам нужно установить несколько пакетов npm. Мы будем использовать "паспорт", "экспресс", "путь" и "паспорт-google-oauth20". Установите эти пакеты с помощью npm.

[электронная почта защищена]: ~ $ npm установить экспресс-паспорт Passport-google-oauth20 путь

Пишущий узел.js код

Прежде всего, мы напишем две простые веб-страницы html, одну с кнопкой, и авторизуем пользователя при нажатии на кнопку. Вторая страница будет авторизована, и пользователь будет перенаправлен на авторизованную страницу после авторизации. Создайте файл public / index.html '.



OAuth


Авторизуйтесь здесь

Теперь создайте файл public / success.html 'со следующим содержанием.



OAuth


Авторизованный



После создания веб-страниц теперь мы напишем код для авторизации пользователей для использования google oauth. Создать индекс файла.js '.

// импортируем необходимые пакеты
const express = require ('экспресс');
const паспорт = требуется ('паспорт');
const path = require ('путь');
const GoogleStrategy = require ('паспорт-google-oauth20').Стратегия;
константное приложение = экспресс ();
// определение параметров
// идентификатор клиента - это параметр, который мы получим из консоли разработчика Google
CLIENT_ID = «ххххххх»;
// секрет клиента также будет взят из консоли разработчика Google
CLIENT_SECRET = «ххххх»;
// пользователь будет перенаправлен на CALLBACK_URL после авторизации
CALLBACK_URL = «http: // localhost: 8000 / авторизованный»;
// номер порта должен быть таким же, как определено в консоли разработчика
ПОРТ = 8000;
// настройка промежуточного программного обеспечения для паспорта
приложение.использование (паспорт.инициализировать ());
приложение.использование (паспорт.сессия ());
заграничный пасспорт.serializeUser (function (id, done)
сделано (ноль, идентификатор);
);
заграничный пасспорт.deserializeUser (function (id, done)
сделано (нуль, идентификатор);
);
// следующее промежуточное ПО будет выполняться всякий раз, когда паспорт. Вызывается метод аутентификации, который возвращает различные параметры, определенные в области видимости.
заграничный пасспорт.использовать (новый GoogleStrategy (
clientID: CLIENT_ID,
clientSecret: CLIENT_SECRET,
callbackURL: CALLBACK_URL
,
асинхронная функция (accessToken, refreshToken, profile, email, cb)
return cb (null, электронная почта.я бы);

));
// обслуживаем домашнюю страницу приложения
приложение.получить ('/', (req, res) =>

res.sendFile (путь.присоединиться (__ dirname + '/ public / index.html '));
);
// обслуживаем страницу успеха для приложения
приложение.получить ('/ успех', (req, res) =>

res.sendFile (путь.присоединиться (__ dirname + '/ public / success.html '));
);
// пользователь будет перенаправлен на страницу аутентификации Google при каждом переходе по маршруту '/ google / auth'.
приложение.получить ('/ google / auth',
заграничный пасспорт.аутентифицировать ('google', область: ['профиль', 'электронная почта'])
);
// перенаправление сбоя аутентификации определяется в следующем маршруте
приложение.получить ('/ авторизовано',
заграничный пасспорт.аутентифицировать ('google', failureRedirect: '/'),
(req, res) =>

res.перенаправление ('/ успех');

);
// запущенный сервер
приложение.слушать (ПОРТ, () =>

приставка.log («Сервер работает на порту» + ПОРТ)
)

Тестирование Google OAuth

Теперь наше приложение готово, и мы можем проверить, авторизует ли оно пользователей с помощью google oauth. Перейдите в корневой каталог и запустите приложение.

[электронная почта защищена]: индекс ~ $ node.js

Теперь введите URL-адрес вашего приложения в браузер.

http: // локальный: 8000

Показывает домашнюю страницу с тегом привязки.

Когда мы нажимаем «Авторизоваться здесь», он перенаправляет на страницу google oauth.

Название вашего приложения Test отображается на странице аутентификации Google. Когда вы авторизуете свою учетную запись, вы попадете на авторизованную страницу.

Заключение

Управление именами пользователей и паролями для различных веб-приложений - не самая приятная задача для пользователей. Многие пользователи покидают ваше веб-приложение, не зарегистрировав свою учетную запись, только потому, что не хотят управлять учетными данными. Процесс авторизации в вашем веб-приложении или на веб-сайте можно упростить с помощью сторонних сервисов, таких как Google, Facebook и т. Д. Эти службы авторизуют пользователей от их имени, и пользователю не нужно отдельно управлять учетными данными. В этой статье мы реализовали протокол Google oauth для авторизации пользователей на использование Node.js.

WinMouse позволяет настраивать и улучшать движение указателя мыши на ПК с Windows
Если вы хотите улучшить функции указателя мыши по умолчанию, используйте бесплатное ПО WinMouse. Он добавляет дополнительные функции, которые помогут ...
Левая кнопка мыши не работает в Windows 10
Если вы используете выделенную мышь со своим ноутбуком или настольным компьютером, но левая кнопка мыши не работает в Windows 10/8/7 по какой-то причи...
Курсор прыгает или перемещается случайным образом при наборе текста в Windows 10
Если вы обнаружите, что ваш курсор мыши прыгает или перемещается сам по себе, автоматически, случайным образом при вводе текста на ноутбуке или компью...