Подтвердить что ты не робот

Создание поставщика OpenID в PHP

У меня есть существующий веб-сайт, который я хочу превратить в поставщика OpenID. Все мои учетные записи пользователей хранятся в таблице mysql.

Я понял, что OpenID представлен как URL-адрес, я собираюсь сделать что-то вроде: http://login.mydomain.com/username

Я установил субдомен и создал htaccess, который перенаправляет все URL-адреса в /login.php?username=[username]

То, как я это вижу, и сказать мне, если я ошибаюсь, кто-то идет, чтобы сказать, что StackOverflow, они входят в http://login.mydomain.com/myUsername, Они попадают на страницу моего сервера, которая запрашивает их пароль (так как я уже знаю их имя пользователя), я проверяю, что он соответствует, и возвращает ключ?

Пользователи в Интернете рекомендуют использовать Zend_OpenId_Provider. Я читал их документацию (http://framework.zend.com/manual/en/zend.openid.provider.html), но я считаю это очень запутанным. У них нет реального примера, где пользовательский логин/пароль хранятся в базе данных.

Я также видел php-open-id (http://github.com/openid/php-openid), но не помогайте и там.

Кажется, это довольно обычная вещь. Есть ли учебник или пример, который я могу легко адаптировать?

4b9b3361

Ответ 1

Как вы отметили этот вопрос в zend-framework, я думаю, вы хотите реализовать это с помощью ZF.

Посмотрите на конструктор Zend_OpenId_Provider

public function __construct($loginUrl = null,
                            $trustUrl = null,
                            Zend_OpenId_Provider_User $user = null,
                            Zend_OpenId_Provider_Storage $storage = null,
                            $sessionTtl = 3600)

Важным является параметр $storage.

В примере на http://framework.zend.com/manual/en/zend.openid.provider.html они не передают никаких параметров. Это означает, что по умолчанию используется поставщик Zend_OpenId_Provider_Storage_File. Снова этот будет храниться по умолчанию в файлах в вашем каталоге TEMP (/tmp в Linux).

В принципе, пример должен быть полностью функциональным. Вы можете зарегистрировать еще несколько пользователей, позвонив $server->register($someid, $somepassword);

Но поскольку он сохраняет учетные записи по умолчанию во временном каталоге, вы должны заменить эту строку на что-то вроде этого (если это нормально хранить учетные записи в файлах):

$dir = "/var/lib/myopenidusers";
mkdir($dir);
$server = new Zend_OpenId_Provider(null, null, null, new Zend_OpenId_Provider_Storage($dir) );

Теперь, если вы предпочитаете хранить своих пользователей в базе данных, вам необходимо реализовать свой собственный Provider_Storage.

Посмотрите на абстрактный класс abstract class Zend_OpenId_Provider_Storage. Это методы, которые вы должны реализовать.

Ответ 2

Я попробовал все перечисленные здесь, идентификатор сообщества, simpleid, janrain и т.д., а также все те, кто утверждает, что являются поставщиками из OpenID Wiki/Libraries и не удалось. Затем я наткнулся на Prairie и начал работать примерно через час. Немного больше работы по изменению запросов в index.php и login.php, и я пытался заставить его работать против моей таблицы пользователей.

Ответ 4

Вы можете попробовать JanRain Engage (http://www.janrain.com/products/engage). Это упрощенный интерфейс для интеграции OpenID с веб-приложениями. Бесплатная версия должна быть достаточно хорошей для всех практических целей.

Ответ 5

Мы используем: http://source.keyboard-monkeys.org/projects/show/communityid

На своем веб-сайте:

"Идентификатор сообщества - это реализация OpenID на PHP, совместимая с OpenID 2.0. Идентификатор сообщества строится на 100% на ПО с открытым исходным кодом и выпускается под лицензией BSD. Пользователи могут отслеживать свои надежные сайты и управлять ими Вход в C-ID может быть именем пользователя /passowrd или одноразовым паролем с Yubikey. Пользователь может иметь несколько профилей, например, с приватной или деловой контактной информацией.

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

Для пользовательских данных и аутентификации администратор может выбрать хранилище db по умолчанию или подключиться к LDAP-серверу. Подтвержденным подтверждением является OpenLDAP. Другие LDAP-серверы должны работать и отлично ".

Ответ 6

SimpleID - это небольшое и приятное приложение + программное обеспечение провайдера OpenID. Я использую его сам и не могу жаловаться.