Когда я впервые начал учиться программировать, я прошел больше руководств, чем могу сосчитать. Я создал так много приложений для списка дел, что даже не могу использовать список дел, не задаваясь вопросом, не создал ли кто-то его как учебник, а затем превратил в продукт. Я изучил CRUD (создать, прочитать, обновить, удалить). Изучил фреймворки (React, Angular, Vue). Я так многому научился, но в каждом уроке чего-то не хватало. Что-то критическое.

Аутентификация.

Приложение, безусловно, может работать без постоянства данных. Приложение может работать даже с сохранением данных, но без аутентификации. Но сколько из этих приложений полезны каждый день? Они, как правило, игрушки и примеры, и это нормально. Но независимо от того, учитесь ли вы кодировать или являетесь опытным профессионалом, всегда наступает момент, когда вам нужно привязать определенные данные к конкретному пользователю. А для этого требуется аутентификация. Итак, я хотел взглянуть на несколько доступных инструментов аутентификации, созданных для разработчиков — как бесплатных, так и платных продуктов — чтобы сравнить их. Давайте погрузимся!

Auth0

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

В бесплатном плане Auth0 позволяет следующее:

  • 7000 бесплатных и активных пользователей
  • Вход без пароля (социальная авторизация)
  • До 2 провайдеров социальной аутентификации

Их премиальное предложение начинается с 13 долларов в месяц для 1000 активных пользователей, но также добавляет следующие функции:

  • Хранение журнала в течение 2 дней
  • Неограниченное количество поставщиков социальной аутентификации
  • Связывание аккаунта

Здесь следует помнить одну вещь: если у вас был бесплатный план и у вас уже есть 5000 активных пользователей, переход на следующий уровень не означает платить 13 долларов в месяц, потому что вы уже превысили 1000 пользователей. Это означает, что вы платите любую текущую ставку, основанную на вашем текущем количестве активных пользователей. Это справедливая ценовая стратегия, но ее легко спутать, если не обращать на нее пристального внимания.

Как насчет опыта разработчиков?

Auth0 имеет одну из лучших доступных документов. У них есть множество SDK и API. Все это сводится к выбору собственного типа реализации. Вот снимок реализации React:

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

Паспорт

Для разработчиков, которые хотят создать собственное решение, Паспорт — это инструмент с открытым исходным кодом, к которому они, вероятно, обратятся. Passport полностью бесплатный, с открытым исходным кодом и в хорошем состоянии. В то время как пароль имеет решения для аутентификации имени пользователя / пароля, их хлеб с маслом — социальная аутентификация. У них есть так называемые стратегии, которые представляют собой решения для аутентификации, построенные в основном на основе спецификации OAuth 2.0.

Passport доступен только для Node.js, поэтому, если вы создаете приложение без JavaScript, вам здесь не повезло. Но, судя по увеличению числа приложений, полностью (или в основном) созданных на JavaScript, это, вероятно, стало меньшей проблемой, чем раньше.

Как опыт?

Passport хорошо документирован и поддерживает такой широкий спектр опций, что разработчику будет трудно найти решение, которое ему подходит. Вот пример стратегии аутентификации Facebook:

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "http://localhost:3000/auth/facebook/callback"
  },
  function(accessToken, refreshToken, profile, cb) {
    User.findOrCreate({ facebookId: profile.id }, function (err, user) {
      return cb(err, user);
    });
  }
));

Это довольно просто. В то время как для Auth0 требуется ключ API и информация о конфигурации, которую они предоставляют, Passport просто требует информацию о конфигурации стратегии аутентификации (clientID, clientSecret и т. д.).

Если вы создаете приложение на основе Node и вам просто нужна быстрая и бесплатная аутентификация без наворотов, Passport — отличный вариант.

Окта

Окта — это скорее корпоративное решение, но ничто (кроме цены) не мешает разработчикам внедрить его в некорпоративные приложения. Okta предоставляет как решения для идентификации сотрудников (например, внутренние учетные записи компании), так и решения для идентификации клиентов.

Цены немного сложно разобрать, но в большинстве случаев вы рассчитываете на 2 доллара за пользователя в месяц, чтобы начать пользоваться их услугами.

Если цена вас не отпугнула, давайте посмотрим, что из себя представляет опыт разработчиков. Ну, они раздавят его здесь. У них есть не только тонны документации, но и простые в использовании виджеты, которые вы можете легко добавить в свое приложение. Вот пример:

// Uses okta-signin-widget version 2.13.0
var widget = new OktaSignIn({
  baseUrl: "{{yourOktaDomain}}",
  logo: "/sites/all/themes/developer/owb/alliance.png",
  i18n: {
    // Overriding English properties
    en: {
      "primaryauth.title": "Alliance Authentication",
      "primaryauth.submit": "Sign In"
    },
  },
  
});
widget.renderEl({
  el: "#widget-container"
});

Okta, скорее всего, будет применяться только в более крупных организациях, но если вы разработчик с ограниченным бюджетом и хотите что-то простое в использовании, Okta поможет вам.

OpenID

OpenID — это не столько решение для аутентификации, сколько веб-стандарт. OpenID — это уровень идентификации поверх OAuth 2.0. Стандарты, над которыми они работают, обеспечивают гораздо больше, чем аутентификацию. Они обеспечивают претензии, проверку, шифрование и многое другое. Это надежное решение, созданное фондом, стремящимся улучшить стандарты Интернета.

Но каков опыт разработчиков? Если вы ищете документацию, вы можете искать некоторое время. Документация есть, но в ней сложно ориентироваться и сложно понять. Однако, как только вы разберетесь с этим, вы обнаружите, что OpenID предоставляет решение, похожее на Passport, для нескольких языков программирования.

Если вы хотите создать решение, основанное на стандартах (что всегда является хорошим решением), вам следует взглянуть на OpenID. Просто дайте себе немного больше времени для навигации по сайту.

SimpleID

SimpleID (мой продукт) — это решение, выросшее из пространства Web 3.0. У децентрализованных технологий есть проблема с регистрацией и аутентификацией, и SimpleID решил ее решить. В процессе SimpleID создала решение для аутентификации, которое дает разработчикам быстрый доступ к инструментам шифрования, предоставляет конечным пользователям конфиденциальность и снимает большую часть (если не всю) ответственности с разработчиков.

SimpleID — это решение премиум-класса, но поставляется с бесплатным планом, который предлагает следующие функции:

  • Аутентификация через Ethereum, Blockstack, Textile
  • Хранение данных через Blockstack и IPFS
  • Один девелоперский проект
  • Создано до 500 аккаунтов

Поскольку учетные записи SimpleID могут использоваться в нескольких приложениях, общее количество пользователей применяется только к учетным записям, созданным приложением разработчика. Если разработчик готов к расширению, стоимость составляет всего 9 долларов в месяц для до 10 000 пользователей.

Но как опыт разработчиков? SimpleID создан для решения общей проблемы Интернета и JavaScript в децентрализованном веб-пространстве. Несмотря на то, что SimpleID имеет невероятно простой в использовании JavaScript SDK, он также предоставляет простые конечные точки API, которые можно использовать на любом языке программирования:

Если вы разрабатываете децентрализованное приложение, вам обязательно стоит взглянуть на SimpleID. Но даже если это не так, SimpleID может обеспечить вам защиту данных, которую не могут обеспечить другие сервисы.

Вывод

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