Что такое Auth0? Как я могу интегрировать его в приложение NodeJS?

Что такое Auth0?

Auth0 — это облачная платформа идентификации, которая упрощает аутентификацию и авторизацию пользователей для приложений и API. Он предлагает разработчикам простой способ интегрировать безопасный вход в систему, единый вход и контроль доступа в свое программное обеспечение без необходимости обширной настройки инфраструктуры.

Он использует протокол OIDC (OpenID Connect), построенный поверх OAuth 2.0. Он предоставляет пользователям стандартизированный способ аутентификации и получения доступа к веб-приложениям или службам с использованием существующих учетных записей от поставщиков удостоверений.

Преимущества использования Auth0

  • Упрощенная разработка.Auth0 предоставляет встроенные функции проверки подлинности и авторизации, что экономит время и усилия разработчиков при внедрении сложных систем входа с нуля.
  • Экспертиза безопасности: Auth0 использует надежные методы обеспечения безопасности и поддерживает современные меры безопасности, защищая учетные данные пользователей и конфиденциальные данные. Это помогает обеспечить соответствие отраслевым стандартам и нормам, избавляя разработчиков от необходимости внедрять и поддерживать безопасные системы аутентификации.
  • Интеграция с социальными сетями. Auth0 позволяет пользователям входить в систему, используя свои учетные записи в социальных сетях (например, Google, Facebook), избавляя от необходимости создавать новые учетные данные для входа.
  • Единый вход (SSO). Auth0 предлагает функцию единого входа, позволяющую пользователям пройти аутентификацию один раз и получить беспрепятственный доступ к нескольким приложениям.

Создание нашего первого приложения Auth0

После создания учетной записи Auth0 перейдите на панель инструментов и выберите Приложения/Приложения в боковом меню. Нажмите кнопку "Создать приложение".

Там напишите название своего приложения и выберите его тип, в данном случае это будет Обычное веб-приложение.

Теперь перейдите в свое приложение и выберите вкладку Настройки, найдите Разрешенные URL-адреса обратного вызова и Разрешенные URL-адреса выхода, где вы будете вводить показанные направления. ниже (эти направления не существуют, но не волнуйтесь, мы собираемся создать проект для их использования).

Интеграция Auth0 с NodeJS + Express

Создайте приложение NodeJS:

npm init

Установите необходимые пакеты express и express-openid-connect:

npm install dotenv express express-openid-connect --save

Создайте файл с именем app.js, используя следующий код:

const express = require("express");
const { auth } = require("express-openid-connect");
require("dotenv").config();

const port = process.env.PORT;

const config = {
  authRequired: false,
  auth0Logout: true,
  secret: process.env.SECRET,
  baseURL: process.env.BASEURL,
  clientID: process.env.CLIENTID,
  issuerBaseURL: process.env.ISSUER,
};

const app = express();

app.set("view engine", "ejs");

app.use(express.urlencoded({ extended: true }));

// auth router attaches /login, /logout, and /callback routes to the baseURL
app.use(auth(config));

// req.isAuthenticated is provided from the auth router
app.get("/", (req, res) => {
  console.log(req.oidc.isAuthenticated());
  const isAuthenticated = req.oidc.isAuthenticated();
  const response = isAuthenticated ? req.oidc.user : "Not logged in";
  res.send(response);
});

app.listen(port);

Затем создайте файл .env и поместите значения из вкладки «Настройки» вашего приложения Auth0:

PORT=3000
SECRET=somerandomstring
BASEURL=http://localhost:3000
#Get this value from your Auth0 "Client ID" field
CLIENTID=XXXXX 
# Replace the X's with the value from your Auth0 "Domain" field
ISSUER=https://XXXXX

Теперь выполните следующую команду, чтобы запустить приложение:

node app.js

Перейдите в браузер и введите URL-адрес локального приложения. Вы увидите сообщение о том, что нам все еще нужно войти в систему:

Чтобы войти, перейдите по адресу localhost:3000/login, появится экран входа Auth0, как показано ниже. Там зарегистрируйтесь изатем войдите с теми же учетными данными.

Если все пойдет хорошо, вы будете перенаправлены на свою домашнюю страницу, где будет отображаться информация о пользователе:

Если вы хотите выйти, просто перейдите по адресу localhost:3000/logout,ваш браузер должен перенаправить вас на домашнюю страницу, снова отобразив сообщение «Вы не вошли в систему». ” сообщение.