Твой собственный OpenID 25 января 08

Система единого входа OpenID, разработанная создателем Живого Журнала Брэдом Фитцпатриком несколько лет назад, постепенно начала входить в моду. Список сайтов, поддерживающих OpenID-вход, растет – есть и плагин для OpenID-комментариев в WordPress.
Если у тебя есть сайт, то вполне логичным будет использование его имени в качестве OpenID-логина.
Не надо мне теории, дайте код!
Что такое OpenID?
Даю слово Википедии:
OpenID — это свободная децентрализованная система единого входа, которая позволяет использовать один логин и пароль на большом количестве сайтов. На сайтах поддерживающих OpenID, пользователям не приходится регистрироваться и помнить данные для каждого сайта. Вместо этого им достаточно быть зарегистрированными на сайте «провайдера идентификации» OpenID (предоставляющего идентификатор).Так как технология OpenID децентрализованная, то любой сайт может использовать программное обеспечение OpenID в качестве средства входа; OpenID решает проблему не полагаясь на централизованный сайт для подтверждения подлинности пользователя.
(текст из Википедии: OpenID)
Принцип работы OpenID
- С OpenID ты авторизуешься только один раз за сеанс работы – на сайте провайдера.
- OpenID использует твое доменное имя как логин
- Поэтому твой логин уникален и может быть использован только тобой (если увидите coldflame.in.ua – это я и никто другой)
- Если сайт поддерживает OpenID, то где-то около ввода логина/пароля, должно быть поле OpenID, куда вводится OpenID-логин, то есть твое доменное имя:

- Провайдеры бывают разные (у нас будет свой)
Преимущества OpenID
- Возможность писать комментарии на многих блог-серверах (например, LiveJournal, Blogspot, WordPress), не регистрируясь там.
- Если сайт/сообщество поддерживает OpenID, там всегда можно использовать свой нормальный логин – никто не может его занять. Здорово, правда?
- Пока ты владеешь доменным именем – твой логин никто не отберет.
- Когда-нибудь необходимость в регистрации на сайтах вообще отпадет.
Установка собственного провайдера OpenID

Ладно, хватит теории!Провайдеров OpenID много, но если у тебя есть PHP-хостинг, можно установить свой собственный – ни от кого не зависеть, Пригодятся базовые знания PHP, на уровне «поменять значение строковой константы».
Будем использовать библиотеку phpMyId. Хотя библиотека – это громко сказано. phpMyId – это однопользовательский провайдер OpenID, написанный на PHP. Устанавливается еще проще, чем хваленый WordPress.
Что тебе понадобится?
- Дистрибутив phpMyId
- PHP-хостинг
- отключенный safe mode
- Базы данных не нужны (на одного пользователя? зачем?)
Установка
- Распаковываем дистрибутив на сайт в отдельную папку, например,
/openid - Переименовываем
MyId.config.phpвindex.php - Открываем его. Наблюдаем два массива с конфигурацией. Нам строго необходимо указать
auth_username– твой логин (любой, не имеет значения)auth_password– отдельным скриптом считаем хеш, например, так:<?php=md5('твой-логин-из-предыдущего-пункта:phpMyID:твой-пароль')?>получаем строку типа
37fa04faebe5249023ed1f6cc867329b, вот ее и вписываем в конфиг.idp_url– это URL твоего провайдера – раскомментируй и впиши URL файлаindex.php, например, у меня –http://coldflame.in.ua/openid/index.php(вроде бы и не необходимая настройка, но без нее у меня не заработало)
На это настройка провайдера закончена! Осталось привязать его к твоему доменному имени.
- Для этого редактируем
indexтвоего домена (попросту, страницу, которая будет открываться при вводе твоего OpenID-логина в обозреватель) - В <head> этой страницы добавляем две строчки. Важно – URL должен быть путем к файлу, т.е. заканчиваться на index.php, без этого у меня не заработало.
<link rel="openid.server" href="URL твоего провайдера" /> <link rel="openid.delegate" href="URL твоего провайдера" />
- Поздравляю, теперь можешь использовать свой домен как OpenID-логин!
Для желающих покопаться в настройках подробнее описано в README к библиотеке.
Проверяем
Проще всего проверить исправность своего OpenID OpenID Checkup – достаточно ввести туда свой логин (я ввожу http://coldflame.in.ua), и следовать инструкциям. Или оставь Open-ID комментарий на этот пост – пользователи ЖЖ могут сделать это без лишних хлопот. :)

Подписаться на RSS

Комментарии
услышал про phpMyID не отсюда, но сделал примерно так же
Проверим как, как работая OpenID на ya.ru :)
Спасибо за информацию. Проверим, как работает.
Тест
Кстати, в readme там написано не
md5(‘твой-логин-из-предыдущего-пункта|phpMyId|твой-пароль’)
а
md5(‘твой-логин-из-предыдущего-пункта:phpMyId:твой-пароль’)
Двоеточия вместо палочек.
У меня работает вариант с разделителем двоеточие ( : ), вариант с | проверять не стал.
Замечу еще, что средний параметр из хэша — realm. Т.е., если вы его меняли в конфиге, надо и в хэшэ подменить.
Ну и генерить хэш наверное все же проще так:
echo -n ‘login:realm:password’ | openssl md5
Test
Test
tst
test
> У меня работает вариант с разделителем двоеточие ( : ),
> Ну и генерить хэш наверное все же проще так:
Ага. Это всё в README написано ^_^
Спасибо, супер. Всё заработало с перврго раза.
test
test
hello!
test еще!
Проверка
За свободными технологиями будующее!
Спасибо за такой простой пример, хорошо описано что надо сделать и все будет работать, одно но:
у меня $GLOBAL отключен, пришлось весь код перефигачить, чтобы заработало.
привет, автор
эт всё конечно замечательно (хотя бы то, что я авторизован своим сайтом), однако беды с ЖЖ («no_identity_server: The provided URL doesn’t declare its OpenID identity server.») не дают покоя
Кхм…
Поделишься секретом?))
тест
Спасибо за чекер openid – это как раз то, что я искал. И на блоге вашем зачитался – куча интересной инфы. :)
А где еще можно потестировать openid =)
Тестирую…
Вроде работает =)
извините, но тест …
так работает же :)
Пробовал этот метод, но так и не заработало, в итоге остановился на плагине к WP OpenID и все ок:)
При генерации пароля необходимо писать phpMyID вместо phpMyId. Исправьте, пожалуйста.