6 JavaScript-библиотек для аутентификации пользователей в 2019 году

0
927
views

Перевод статьи Джонатана Сэринга «6 JavaScript User Authentication Libraries for 2019».

Библиотеки для аутентификации пользователей

«Сделай мне систему аутентификации пользователей за две недели», – в наше время это распространенная фраза среди членов R&D (Research and development) команд. По различным причинам эта задача всегда относилась к числу вещей, заниматься которыми поручают одному разработчику из команды.

И с одной стороны, вы не хотите тратить время на это. А с другой – сомневаетесь, не будет ли лучше, если подобного рода информацию будет обрабатывать ваш собственный, написанный внутри компании сервис.

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

1. Passport JS

Passport JS

Библиотека для аутентификации пользователей Passport набрала на GitHub 15 тысяч звезд. Это, пожалуй, самый распространенный способ, к которому прибегают JS-разработчики, решившие использовать для аутентификации стороннюю библиотеку.

Passport предоставляет относительно гибкое и модульное промежуточное ПО для Node.js, которое можно интегрировать в любое веб-приложение на базе Express.

Это также комьюнити-платформа, поддерживающая различные способы аутентификации, такие как логин-пароль, Facebook, Twitter и др. Если вы не хотите реализовывать собственное решение, для начала, вероятно, стоит обратить внимание именно на эту библиотеку. При этом стоит избегать распространенных ошибок.

  • Использование с Express: https://github.com/expressjs/session
  • Мы используем Bit, чтобы изолировать отдельные компоненты Passport (например, расширения) и использовать их в нескольких наших проектах.

2. Auth0

Auth0

Это не библиотека, а скорее сервис. Это надежный и при этом быстрый способ выполнить нужную работу. Auth0 это (достаточно большая) стартап-компания, предоставляющая универсальную платформу для аутентификации и авторизации. Подходит для веб-, legacy- и мобильных приложений.

Некоторые говорят, что это решение близко к Plataformatec’s Devise для Ruby on Rails, за исключением того что вы можете подсоединить любое приложение или API на любом языке. Этот сервис имеет больше 100 подготовленных интеграций. Есть «быстрый старт» с Node.js.

3. Permit

Permit

Проект Permit набрал на GitHub тысячу звезд. Его цель — предоставить «недогматичную» библиотеку аутентификации для создания Node.js APIs.

Permit дает вам возможность добавить слой аутентификации в любой Node.js API. Он может использоваться с такими фреймворками как Express, Koa, Hapi и Fastify. Подходит для разнообразных видов API, от REST до GraphQL, с этим и связан его «недогматичный» дизайн.

Permit фокусируется на APIs (запросы без сохранения состояния) и поддерживает фреймворки помимо Express. Он активно разрабатывается. Все это делает Permit одним из интересных вариантов.

Примеры можно посмотреть здесь. Вот один с Express:

import { Bearer } from 'permit'
import express from 'express'

const permit = new Bearer({
  basic: 'username', // Also allow a Basic Auth username as a token.
  query: 'access_token', // Also allow an `?access_token=` query parameter.
})

function authenticate(req, res, next) {
  // Try to find the bearer token in the request.
  const token = permit.check(req)

  // No token found, so ask for authentication.
  if (!token) {
    permit.fail(res)
    return next(new Error(`Authentication required!`))
  }

  // Perform your authentication logic however you'd like...
  db.users.findByToken(token, (err, user) => {
    if (err) return next(err)

    // No user found, so their token was invalid.
    if (!user) {
      permit.fail(res)
      return next(new Error(`Authentication invalid!`))
    }

    // Authentication succeeded, save the context and proceed...
    req.user = user
    next()
  })
}

const app = express()

app.get('/', (req, res) => {
  res.send('Some unrestricted content.')
})

app.get('/restricted', authenticate, (req, res) => {
  res.send('Restricted content!')
})

app.listen(3000)

4. Grant

Grant
«Нет, это я не сделал», — Улисс Грант.

Это новая и многообещающая библиотека, предоставляющая промежуточное ПО Oauth для Express, Koa и Hapi. Поддерживает больше 180 provider-ов, имеет площадку для испытаний в режиме реального времени. Если вы захотите использовать эту библиотеку с вашим собственным private OAuth provider, вы можете указать требуемый ключ самостоятельно. Хотя эта библиотека уже набирает обороты (больше тысячи звезд на GitHub), ресурсы относительно скудны, поэтому применяйте ее с осторожностью.

5. Управление аутентификацией Feathers

Feathers

Feathers это опенсорсный микросервисный веб-фреймворк для NodeJS. На GitHub у него 11 тысяч звезд. Он дает вам возможность контроля над данными с помощью ресурсов RESTful, сокетов и гибких плагинов.

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

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

6. Firebase Authentication (для маленьких приложений)

Firebase Authentication

Это не обязательно будет долгосрочным решением для управления аутентификацией пользователей на вашей растущей платформе (хотя, кто знает). Но в любом случае это полезный, быстрый и простой способ решить проблему аутентификации в ваших приложениях, развернутых с Firebase.

Для аутентификации пользователей Firebase Authentication предоставляет бэкенд-сервисы, простые в использовании SDK и готовые UI-библиотеки. Поддерживает аутентификацию с использованием паролей, телефонных номеров, а также популярных систем проверки личности, таких как Google, Facebook и Twitter. Узнать больше можно здесь.

Есть очень хорошее руководство по созданию React-приложения с использованием Firebase для аутентификации пользователей при помощи Facebook, Twitter и GitHub.

Также есть похожее руководство для создания Vue.js приложения с аутентификацией Firebase.



ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here