Разница между OAuth2 и Omniauth

Я много читал о Omniauth и OAuth2 и о том, как Omniauth использует OAuth, но я действительно не понимаю, для чего цель для каждого.

Например, я знаю, что с Omniauth я могу вернуть отправленные параметры с помощью

@auth [ 'omniauth.params']

но если я использую OAuth, без Omniauth, могу ли я сделать то же самое?

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

Ответы

Ответ 1

В этом ответе я предполагаю, что вы используете Rails (или некоторую другую фреймворк Rack), потому что Omniauth не имеет большого смысла без этого.

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

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

Вы можете использовать гейм/класс OAuth2 без использования Omniauth и сами справиться с особенностями аутентификации над OAuth2, но я не уверен, почему.

Насколько вы можете делать с Omniauth, что невозможно с OAuth, большинство из них аутентифицируется с помощью других служб, отличных от OAuth (Omniauth позволяет использовать построенные сообществом "стратегии" для аутентификации, например, Stack Exchange).