Я уже провел много исследований по этой теме и сам реализовал множество решений.
Включая OpenID, Facebook Connect (используя старый API Rest и новый API Graph OAuth 2.0), войдите в системус твиттером (который, насколько я знаю, уже обновлен до полностью квалифицированного OpenID) и т. д. ...
Но то, чего мне не хватает, - это идеальное решение "все в одном".
Во время моего исследования я наткнулся на несколько интересных проектов:
Но я не хочуполагаться на внешнего поставщика, и я хотел бы также получить бесплатное решение, поэтому я не ограничен в реализации.
Я также видел разработчиков, внедряющих один сервис за другим, должным образом следуя инструкциям провайдеров.Работа и настройка моделей и таблиц базы данных для всего.
Конечно, это будет работать, но это куча работы и всегда требует разработки и изменений в вашем приложении и т. д.
То, что я ищуfor - это уровень абстракции , который переводит все сервисы в один стандарт, который может быть интегрирован в мой веб-сайт.После появления нового сервиса я хочу добавить только одну модель, которая работает с абстракцией этого конкретного провайдера, чтобы я мог легко интегрировать его в свое приложение.
Или, что еще лучше, найти уже существующее решение, которое я могу просто загрузить.
В идеале этот сервис абстракции должен размещаться независимо от моего приложения, поэтому его можно использовать для нескольких приложений и обновлять независимо.
Последнее из трех решений, представленных выше, выглядит многообещающим из этой концепции.Все просто перенесено на синтетический OpenID, и веб-сайт должен реализовать OpenID.
Через некоторое время я обнаружил Django socialauth , систему аутентификации на основе Python для Django Webframework.Но похоже, что он работает так, как описано выше, и я думаю, что это та же система входа в систему, которую использует Stackoverflow (или, по крайней мере, какой-то измененный форк ...).
Я скачал его и попытался настроить ипосмотрим, можно ли его настроить как автономное решение, но мне не повезло, так как я не очень разбираюсь в python.
Я бы хотел решение на основе PHP.
Так что после этого долгогоТекст мой вопрос точно таков:
- Как бы вы внедрили SSO, есть ли лучшая идея, чем портировать все и иметь OpenID в качестве основы?
- Каковы плюсы и минусы этого?
- Знаете ли вы уже существующие решения?Предпочтительно с открытым исходным кодом.
Надеюсь, этот вопрос не слишком субъективен, заранее спасибо.
Обновление: я пришел к выводу, что создаем прокси / оболочку или как вы могли бы это назвать для Facebookпортировать его на OpenID, чтобы он стал конечной точкой / провайдером OpenID, было бы лучшим вариантом.Так что именно это я и сделал.
Пожалуйста, смотрите мой ответ ниже.
Я добавил награду, чтобы получить отзыв / обсуждение по ней.Маби, мой подход не так хорош, как я сейчас думаю!