Чтобы добавить контекст к ответу @max
, OmniAuth представляет собой извлечение OAuth (открытая авторизация)...
OAuth — это простой способ публикации защищенных данных и взаимодействия с ними. Это также более безопасный и надежный способ предоставить вам доступ. Мы упростили его, чтобы сэкономить ваше время.
Всякий раз, когда у вас есть надежный сервис, например Facebook
, Twitter
, LinkedIn
, GitHub
, NetFlix
и т. д., и вы хотите использовать сервис в сочетании со встроенным подключением к этим существующих услуг, вам понадобится безопасный способ авторизации использования этих данных...
- CRM-система, позволяющая импортировать контакты из
LinkedIn
- Социальная система отправки, которая позволяет отправлять сообщения вашим
Facebook
друзьям.
- Рекомендовать новые фильмы на основе того, что вы недавно смотрели на
NetFlix
Большинство людей знают OAuth
благодаря уведомлению о разрешении доступа для Facebook
и т. д.:
![введите здесь описание изображения](https://i.stack.imgur.com/xjbUG.png)
Интерпретация этого в вашем собственном приложении проста — вы хотите получить данные из Facebook
/ Twitter
/ LinkedIn
/ GitHub
и т. д.?
Настоящее использование OAuth должно заключаться в расширении вашего приложения.
![введите здесь описание изображения](https://i.stack.imgur.com/vfVTs.png)
Большинство пользователей рассматривают запросы приложений на свои данные в социальных сетях как расширение социального опыта (то есть, если я разрешаю 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