Библиотека Oauth является общей или зависит от сайта социальной сети? - PullRequest
2 голосов
/ 17 декабря 2011

У меня есть основные сомнения. Я встречал много OAuth-библиотек с открытым исходным кодом. Но все они зависят от социальных сетей, которые они обслуживают. Мой вопрос заключается в том, что если вся библиотека OAuth зависит от сайтов или есть какие-либо библиотеки OAuth, которые действительно являются общими.

Спасибо

Ответы [ 3 ]

1 голос
/ 22 декабря 2011

TL; реализации DR OAuth2 похожи, но отличаются некоторыми деталями. Если библиотека не была разработана или протестирована с конкретной реализацией сервера, скорее всего, она вообще не будет работать с ней. Мне еще предстоит увидеть библиотеку, которая поддерживает более одного поставщика.

Длинная история: Хотя все реализации OAuth2 похожи, дьявол кроется в деталях. Например, сравнивая шаг 1 (код запроса) протоколов Facebook и Google OAuth2:

  • с помощью Facebook вы регистрируетесь и вносите в белый список весь домен, для Google вы указываете определенные URL-адреса.
  • Facebook позволяет добавлять произвольные & параметры в redirect_uri, Google позволяет только передавать и указывать URL-параметры
  • Google требует указать параметр response_type = code, Facebook не

Получение токена доступа также не вполне совместимо:

  • Google разрешает только POST-запрос, Facebook поддерживает как POST, так и GET
  • Google возвращает ответ JSON, Facebook - строку URL
  • Facebook требует точно такой же redirect_uri, что и на шаге 1, Google не проверяет наличие & state

Я не собирался составлять полный список всех отклонений. Это лишь некоторые примеры, которые я заметил, читая публичную документацию и экспериментируя с API. ВКонтакте в основном использует причуды Facebook, но на шаге 2 возвращает JSON, аналогично Google.

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

1 голос
/ 17 декабря 2011

Я не уверен, что вы подразумеваете под зависимостью от социальной сети. OAuth - это стандартизация и объединенная мудрость многих устоявшихся отраслевых протоколов. Он аналогичен другим используемым протоколам (Google AuthSub, AOL OpenAuth, Yahoo BBAuth, предстоящий API, Flickr API, Amazon Web Services API и т. Д.). Каждый протокол предоставляет собственный метод обмена учетными данными пользователя для токена доступа

Каждый поставщик социальных услуг внедрил эти спецификации OAuth, будь то Google / Yahoo / MSN / facebook. Единственная разница может заключаться в том, как каждый поставщик услуг внедрил эти спецификации.

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

0 голосов
/ 17 декабря 2011

OAuth 1 является спецификацией, поставщики должны придерживаться спецификации или указать причины отклонения от спецификации.

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

Короче говоря, хорошая библиотека OAuth 1 будет работать с любым хорошо реализованным провайдером. У меня меньше опыта работы с OAuth 2, но я уверен, что библиотеки там менее стандартизированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...