Установка собственного OpenID сервера phpMyID

UPНиже описан процесс установки собственного OpenID сервера. В большинстве случаев этого можно избежать, чтобы узнать, о более простом способе подключения OpenID читайте статью Самый простой способ подключить OpenID к своему сайту

Не так давно возникла у меня идея о том, что использование собственного OpenID сервера, может оказаться неплохим подспорьем в продвижении сайтов. Все больше ресурсов поддерживают эту технологию в качестве метода авторизации, например, он широко используется в ЖЖ. Установка собственного сервера для поддержки OpenID позволяет вам подписываться собственным именем, не требуя при этом создания новых аккаунтов для различных сервисов.

В качестве сервера я выбрал небольшой скрипт на PHP, который позволяет организовать поддержку OpenID минимальными усилиями - phpMyID. На сайте можно найти ссылку на SVN репозиторий, где расположен этот проект, но если эти загадочные буквы не вызывают у вас никаких ассоциаций, то можете воспользоваться этим архивом

Установка phpMyID

phpMyID может быть установлен на любой сервер, при этом очень желательно, чтобы он находился под вашим контролем.

1. Требования к инсталляции phpMyID

Для установки phpMyID вам потребуется всего два файла.

MyID.php - реализует функциональность OpenID сервера.

MyID.config.php - конфигурационный файл, который содержит ваш профиль.

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

2. Загрузите файлы на сервер, в любую директорию по собственному желанию, например, в корневую директорию сайта.

Если вы переименовали файл MyID.php то в конфигурационный файл необходимо внестисоответствующие изменения.

3. Зайдите в конфигуратор, набрав в браузере URL к файлу MyID.config.php

Вы должны увидеть сообщение "This is an OpenID server endpoint.", а так же значение параметров "Server" и "Realm"

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

4. Запишите значение параметра "Realm", которое понадобится вам для конфигурации сервера. Если вы хотите изменить это значение, тогда отредактируйте значение переменной "auth_realm" в конфигурационном файле.

5. Выберите логин и пароль, который вы будете использовать для аутентификации на своем OpenID сервере.

Из соображений безопасности программа не хранит пароль в открытом виде, а для того чтобы его создать вам потребуется подсчитать MD5 hash от строки "username:realm:password".

Для этого загрузите программу подсчета контрольной суммы http://www.fourmilab.ch/md5/ и в командной строке наберите следущее

  1.  
  2. -d"username:realm:password"
  3.  

В строке необходимо подставить -вместо username, realm, password ваш логин, "realm", записанный в пункте 4 и пароль, разделив их двоеточием. Результатом будет строка из 32 символов, которая является вашим зашифрованным паролем, запишите ее в качестве значения переменной 'auth_password' в конфигурационном файле. Замените в нем значение 'auth_username' на ваш логин.

6. Снова загрузите конфигурационный файл на сервер, заменив существующий.

Перейдите на эту страничку с помощью браузера и попробуйте зарегистрироваться, нажав кнопку 'Login'. После ввода имени и пароля вы должны получить сообщение об успешной регистрации.

7. Для того чтобы использовать основной URL вашего сайта в качестве OpenID вы должны указать ссылку на свои openid.server и openid.delegate.

Для этого добавьте в заголовок главной страницы сайта следующие строки

  1.  
  2. <link rel="openid.server" href="http://адрес_вашего_сервера/MyID.config.php">
  3. <link rel="openid.delegate" href="http://адрес_вашего_сервера/MyID.config.php">
  4.  

Обе переменные должны указывать на один и тот же сайт.

Установка закончилась и теперь вы можете подписываться собственным именем на любом сайте с поддержкой OpenID

Читайте в блоге

PHP. Преобразование таблицы в картинку. Создание информеров.
MFC. Использование HTML-интерфейса.
Полезные ссылки
Повторное экранирование кавычек в PHP

Метки: openid php

Комментарии:

Михаил @ 14.02.2010 18:21

Выдает ошибку
Warning: implode() [function.implode]: Invalid arguments passed in /usr/home/images/public_html/openid/MyID.php on line 1569

phpMyID is not compatible with 'suhosin'
Владимир Рыбаков @ 15.02.2010 10:01

Собственно в сообщении все написано, на хостинге подключен модуль безопасности suhosin, который не работает с phpMyID. В коде последнего стоит отдельная проверка на этот случай.

Наверное можно поправить, но гораздо проще найти анаголичный класс, который уживается с suhosin без дополнительных телодвижений.
Михаил @ 15.02.2010 11:29

К сожалению, он такой единственный в своем роде, по крайней мере столь же простой реализации найти не удалось :-(
Михаил @ 16.02.2010 09:18

Можно вправить мозги. В настройках есть опция 'allow_suhosin', меняем ее значение на TRUE
Владимир Рыбаков @ 16.02.2010 17:12

Михаил, спасибо. Вовремя вправить мозги это важно.

Иногда и документацию почитать невредно.
Михаил @ 16.02.2010 17:30

Я имел ввиду "вправить мозги скрипту"))
Onore @ 28.02.2010 20:33

Поставил phpMyID может вы сталкивались...
Все прописано правильно...
http://onore.kiev.ua/ - не работает
http://onore.kiev.ua/openid/ - работает
http://onore.kiev.ua/Index1.html - работает
Просто ППц phpMyID
Владимир Рыбаков @ 01.03.2010 15:37

С подобным поведением не сталкивался, но посмотрел код Вашей страницы и заметил две подозрительные вещи.

1. ссылки для openid.server и openid.delegate разные, а согласно документации должны совпадать.

2. на странице эти переменные определены дважды, наверное сказываетеся наследие WordPress
Onore @ 02.03.2010 00:25

То я в ВордПрессе менял настройки вменю OpenID, насколько я понял, он тоже может использоваться как OpenId.
Сейчас убрал и смог зайти на ЖЖ.
Сейчас работает через phpMyID
В примере (на сайте автора) "1. ссылки для openid.server и openid.delegate разные," тоже разные...
Почему сейчас работает хз.. прошло время.
Xstroy @ 30.10.2010 01:25

Спасибо за столь подробное руководство, жаль только ссылка на калькулятор битая, да и голову пришлось поломать, как сумму правильно посчитать, но оно того стоило!
Владимир Рыбаков @ 30.10.2010 01:36

Спасибо, за сообщение о битой ссылке. Поправил.

На самом деле можно сделать собственный OpenID гораздо проще, без установки сторонних модулей. На днях непременно напишу о том, как это сделать.
Onore @ 31.10.2010 18:23

Как напишете, сюда в комментах напишите ссылку, и всем на почту прийдет :)
serg @ 02.03.2011 22:37

как хеш подсчитать??????????
Уже час парюсь((((((
Где эти 32 символа должны вылезти??????
Xstroy @ 03.03.2011 09:24

Ходи ко мне <a href="http://xstroy.com/besplatno-vse/">там ссылочка</a> есть на десктопный MD5 калькулятор (сам с командной строкой не дружу).
Берёшь пустой текстовый файл, пишешь в нём пароль, сохраняешь и мышкой в окошко проги. Сумма отобразится.
Владимир Рыбаков @ 03.03.2011 16:53

На этом сайте http://www.md5.cz/ вводите в поле нужную строку, жмете кнопку и получаете md5 hash
Xstroy @ 03.03.2011 22:42

Круто. Проще не придумаешь :)
alexcandr @ 11.10.2011 00:30

Спасибо за подробный мануал, очень оказался кстати!!!
Владимир Рыбаков @ 11.10.2011 09:42

В новой статье http://it.nittis.ru/simple-openid.html рассказывается о более просом способе подключения OpenID к своему сайту.
Portalex @ 10.03.2012 00:34

и что правда пиар за 10 комментариев?
Evgeniy Xstroy @ 16.02.2016 09:20

Привет! Не знаю жив ли ещё )))
Любимый мне openid Яндекса отрубили и пришлось настраивать свой, а он теперь уже не хочет работать.
В жж пишет
Fatal error: Call to undefined function session_is_registered() in /home/..../MyID.php on line 1344

В этой строке используется session_is_registered, которая как я понял в php 5.4 и выше уже конфликтует.
Источник умер... Может подсобишь запустить скрипт? Или подскажи какой из openid серверов ставит ссылку на сайт, а не на свой профиль...

Войдите на сайт, чтобы оставить комментарий