Аутентификация: пользовательская или третья сторона

Я создаю приложение на Ruby on Rails и исследую Devise, Omniauth и создаю свою собственную версию.

Мой вопрос: каковы сценарии, в которых вы бы использовали один из трех вариантов выше?

Мое мнение: Omniauth может обеспечить быструю регистрацию через сторонние API, но для доступа к дополнительным данным потребуются дополнительные разрешения. Devise предоставляет основные функции, которые также можно настраивать в зависимости от потребностей приложений. не требуется

** Я склоняюсь к Devise, так как он обеспечивает основу и позволяет мне добавлять к этому

Дополнительные соображения: - Моему приложению необходимо войти в систему и получить доступ к основной информации для: местоположения, языка I18n и т. д. - Мое приложение также выполняет финансовые операции (если вы являетесь платным участником и т. д.).

Возвращаясь к моему вопросу: исходя из вышеизложенного, кажется ли Devise лучшим выбором? Предоставляет ли Omniauth эти функции? Когда я должен использовать один по сравнению с другим?

Спасибо


person Ankit Patel    schedule 27.01.2016    source источник


Ответы (2)


Devise и Omniauth делают очень разные вещи, и их часто используют вместе.

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

Omniauth — это платформа для аутентификации пользователей через Oauth. Omniauth, в отличие от Devise, не поставляется с представлениями или контроллерами. Вместо этого вам нужно интегрировать обратные вызовы Oauth в ваше приложение. Что делает Omniauth, так это абстрагируется от различий между разными провайдерами.

Оба могут использоваться вместе для обеспечения аутентификации пользователя, например, с помощью пароля или oauth.

Внедрение собственного решения для аутентификации обычно не рекомендуется. За такими проектами, как Devise, стоят сотни, если не тысячи человеко-часов, и множество глаз просматривают кодовую базу на предмет недостатков. Плохие самодельные решения для аутентификации, разработанные компаниями с синдромом Not Invented Here, являются одним из наиболее распространенных сбоев в системе безопасности, которые приводят к утечке пользовательских данных и паролей.

person max    schedule 27.01.2016

Чтобы добавить контекст к ответу @max, OmniAuth представляет собой извлечение OAuth (открытая авторизация)...

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

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

  • CRM-система, позволяющая импортировать контакты из LinkedIn
  • Социальная система отправки, которая позволяет отправлять сообщения вашим Facebook друзьям.
  • Рекомендовать новые фильмы на основе того, что вы недавно смотрели на NetFlix

Большинство людей знают OAuth благодаря уведомлению о разрешении доступа для Facebook и т. д.:

введите здесь описание изображения

Интерпретация этого в вашем собственном приложении проста — вы хотите получить данные из Facebook / Twitter / LinkedIn / GitHub и т. д.?

Настоящее использование OAuth должно заключаться в расширении вашего приложения.

введите здесь описание изображения

Большинство пользователей рассматривают запросы приложений на свои данные в социальных сетях как расширение социального опыта (то есть, если я разрешаю app доступ к моему FB, я ожидаю, что он будет публиковаться на моей стене и т. д.).

Вместо того, чтобы рассматривать это как способ разрешить пользователям входить в систему с учетными данными Twitter / Facebook / LinkedIn (что на 100% действительно), вы должны подумать о функциональности более высокого уровня.

--

Разработка != OmniAuth

Devise — это система аутентификации; OAuth — это авторизация.

OmniAuth расширяет OAuth для аутентификации:

OmniAuth — это библиотека, которая стандартизирует аутентификацию нескольких поставщиков для веб-приложений.

Он заменяет email/password на Twitter API key. Таким образом, всякий раз, когда вы создаете аутентификацию в вашей системе, вам всегда нужно будет хранить User данные и т. д. Разница заключается в том, как эти данные аутентифицируются.

Короче говоря, если вам нужны кнопки Sign in with Twitter и т. д., рекомендуется OmniAuth. Однако, чтобы обеспечить согласованность аутентификации, лучше всего использовать Devise с OmniAuth.

--

Наконец, не применяйте собственную аутентификацию, если вы не внедрили Devise по крайней мере 5 раз. Вся аутентификация Rails работает одинаково (использует стратегии Warden). Не стоит тратить время на отладку собственной системы, когда Devise имеет 100 000 пользователей, выполняющих работу за вас.

person Richard Peck    schedule 27.01.2016