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

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

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

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

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

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

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

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

https://console.developers.google.com

Настройка Google Project

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

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

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

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

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

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

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

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

Запуск проекта Node.js

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

[e защита почты]: ~ $ mkdir auth

[защита электронной почты]: ~ $ cd auth

[защита электронной почты]: ~ $ npm init -y

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

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

[адрес электронной почты защищен]: ~ $ npm install express Passport authentication-google-oauth20 path

Написание кода для Node.js

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

OAuth

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

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

OAuth

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

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

//импорт необходимых пакетов

const express = require (‘express ‘);

const паспорт = require (‘ паспорт ‘);

const path = require (‘ path ‘);

const GoogleStrategy = require (‘паспорт-google-oauth20’). Стратегия;

const app = express ();

//определение параметров

//идентификатор клиента — это параметр, который мы получим из консоли разработчика Google

CLIENT_ID = ”xxxxxxx”;

//секрет клиента также будет взят из консоли разработчика Google

CLIENT_SECRET = ”xxxxx”;

//пользователь будет перенаправлен на CALLBACK_URL после авторизации

CALLBACK_URL = ”http://localhost: 8000/authorized”;

//номер порта должен быть таким же, как определено в консоли разработчика

PORT = 8000;

//настройка промежуточного ПО для паспорта

app.use (паспорт.initialize ());

app.use (паспорт.session ());

паспорт.serializeUser (function (id, done) {

done (null, id);

});

паспорт.deserializeUser (function (id, done) {

done (null, id);

});

//следующее промежуточное ПО будет работать, если ни разу паспорт. Вызывается метод аутентификации, который возвращает различные параметры, определенные в области.

паспорт.use (новый GoogleStrategy ({

clientID: CLIENT_ID,

clientSecret: CLIENT_SECRET,

callbackURL: CALLBACK_URL

},

async функция (accessToken, refreshToken, profile, email, cb) {

return cb (null, email.id);

}

));

//обслуживаем домашнюю страницу для приложения

app.get (‘/’, (req, res) =>

{

res.sendFile (path.join (__ dirname + ‘/public/ index.html ‘));

});

//обслуживаем страницу успеха для приложения

app.get (‘/success’, (req, res) =>

{

res.sendFile (path.join (__ dirname + ‘/public/success.html’));

});

//пользователь будет перенаправлен на страницу авторизации Google всякий раз, когда попадает в маршрут ‘/google/auth’.

app.get (‘/google/auth’,

пароль rt.authenticate (‘google’, {scope: [‘profile’, ’email’]})

);

/ Перенаправление сбоя/аутентификации определяется в следующем маршруте

app.get (‘/authorized’,

паспорт.authenticate (‘google ‘, {failureRedirect:’/’}),

(req, res) =>

{

res .redirect (‘/success’);

}

);

//выполняется сервер

app.listen (PORT, () =>

{

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

})

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

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

[email protected]: ~ $ node index.js

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

http://localhost: 8000

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

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

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

Заключение

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

Оцените статью
nanomode.ru
Добавить комментарий