Реализация комбинированной авторизации (OAuth, OpenID и т. Д.) С использованием PHP - PullRequest
2 голосов
/ 25 марта 2011

Я пишу свою собственную библиотеку аутентификации на PHP. Я хочу реализовать в качестве драйверов не только авторизацию в старом стиле, но и сервисы OAuth и OpenID (возможно, и другие). Эти драйверы будут работать с разными данными (токены или простой массив или любые другие), поэтому мне нужно создать отдельные таблицы для драйверов + одну основную таблицу для основной пользовательской информации (ID, Screenname и т. Д.).

Итак, как реализовать (или использовать существующие) библиотеки Auth? Я не прошу помощи с кодированием, просто хочу собирать идеи, советы и другие лучшие практики.

1 Ответ

0 голосов
/ 25 марта 2011

Если я правильно понимаю, вы хотите создать библиотеку, которая будет поддерживать все это одновременно?Таким образом, пользователь A может войти в систему через OAuth, а пользователь B - через OpenID?И библиотеку, которую вы создаете, нужно использовать для обеспечения простых «односторонних вызовов»?

Я реализовал нечто подобное (для драйверов с короткими URL) в простой среде для XenForo.Я сделал это путем создания универсального класса с функцией «shortten ($ url, $ method)» и динамически проверил, чтобы убедиться, что драйвер метода существует в указанном каталоге (XenForo имеет функцию автозагрузки Zend Framework, поэтому мы используем ее) ивызовы функций построения.Затем я передаю необходимую информацию (только $ url) и позволяю драйверу получить эту информацию.

Если вы храните всю необходимую информацию у пользователя, вы можете иметь поле базы данных «extraData» со всей необходимой информацией дляуказанный «метод» сериализован или хранится унифицированным способом, который может быть передан драйверу.

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

...