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

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

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

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

Путем я вижу его и говорю мне, если я неправ, кто-то переходит к скажем, 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), но никакая справка там также.

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

12
задан Nathan H 20 July 2010 в 21:04
поделиться

4 ответа

Поскольку вы отметили этот вопрос с помощью 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.

Взгляните на абстрактный класс абстрактный класс Zend_OpenId_Provider_Storage . Это методы, которые вам нужно реализовать.

8
ответ дан 2 December 2019 в 21:42
поделиться

Вы можете попробовать phpMyId. Посмотрите демо-версию от http://phpmyid.com/. Все подробности о phpMyId можно найти на http://siege.org/phpmyid.php.

1
ответ дан 2 December 2019 в 21:42
поделиться

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

1
ответ дан 2 December 2019 в 21:42
поделиться

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

С их веб-сайта:

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

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

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

0
ответ дан 2 December 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: