Включая OpenID, Facebook Connect (с использованием старого Rest API и новый API Graph OAuth 2.0), войдите в систему с помощью Twitter (который, насколько мне известно, к настоящему времени обновлен до полностью квалифицированного OpenID) и так далее...
Но чего мне до сих пор не хватает, так это идеального решения «все в одном».
Во время исследования я наткнулся на несколько интересных проектов:
- Janrain (ранее RPX) — коммерческое решение.
- Gigya — бесплатное, но внешнее решение с Javascript и rest API.
- AnyOpenID — бесплатное решение для клиентов, коммерческое для веб-сайтов
Я также видел, как разработчики внедряли один сервис за другим, послушно следуя инструкциям провайдера. и настройку моделей и таблиц базы данных для всего.
Конечно, это сработает, но это куча работы, и всегда требуется доработка, изменения в вашем приложении и т. д. p>
Мне нужен уровень абстракции, который объединяет все существующие сервисы в один стандарт, который можно интегрировать в мой веб-сайт. Как только появляется новый сервис, я хочу добавить только одну модель, которая касается абстракции этого конкретного провайдера, чтобы я мог легко интегрировать ее в свое приложение.
Или лучше, найдите уже существующее решение, которое я могу просто загрузить.
В идеале эта служба абстракции должна размещаться независимо от моего приложения, чтобы ее можно было использовать для нескольких приложений и обновлять независимо.< /p>
Последнее из трех вышеперечисленных решений выглядит многообещающе с точки зрения концепции.
Все просто перенесено на синтетический OpenID, а веб-сайт просто должен реализовать OpenID.< /p>
Через некоторое время я нашел Django Socialauth, систему аутентификации на основе Python для веб-фреймворка Django. Но похоже, что он работает так, как описано выше, и я думаю, что это та же система входа, которую использует Stackoverflow (или, по крайней мере, какая-то модифицированная вилка...).
Я скачал его и попытался настроить и посмотреть, можно ли его настроить как отдельное решение, но мне не повезло, так как я тоже не очень разбираюсь в Python.
Мне бы хотелось решение на основе PHP.
Поэтому после этого длинного текста мой вопрос именно такой:
- Как бы вы реализовали единый вход? Есть ли лучшая идея, чем портировать все и использовать OpenID в качестве основы?
- Каковы в этом плюсы и минусы?
- Знаете ли вы какие-либо уже существующие решения? Желательно с открытым исходным кодом.
Обновление:
Я пришел к выводу, что создание прокси-сервера/обертки или того, как вы могли бы его назвать, для Facebook, чтобы перенести его на OpenID, чтобы он стал конечной точкой/провайдером OpenID, было бы лучшим вариантом.
/>Именно это я и сделал.
Пожалуйста, смотрите мой ответ ниже.
Я добавил награду получить обратную связь/обсуждение по этому поводу. Мэйби, мой подход не так хорош, как я сейчас думаю!
Подробнее здесь: https://stackoverflow.com/questions/406 ... -providers