Лучший способ реализовать систему единого входа со всеми основными поставщиками?Php

Кемеровские программисты php общаются здесь
Anonymous
Лучший способ реализовать систему единого входа со всеми основными поставщиками?

Сообщение Anonymous »

Я уже провел много исследований по этой теме и сам реализовал множество решений.

Включая 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

Вернуться в «Php»