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

Логотип OpenID

Система единого входа OpenID, разработанная создателем Живого Журнала Брэдом Фитцпатриком несколько лет назад, постепенно начала входить в моду. Список сайтов, поддерживающих OpenID-вход, растет – есть и плагин для OpenID-комментариев в WordPress.

Если у тебя есть сайт, то вполне логичным будет использование его имени в качестве OpenID-логина.

Не надо мне теории, дайте код!

Что такое OpenID?

Даю слово Википедии:

OpenID — это свободная децентрализованная система единого входа, которая позволяет использовать один логин и пароль на большом количестве сайтов. На сайтах поддерживающих OpenID, пользователям не приходится регистрироваться и помнить данные для каждого сайта. Вместо этого им достаточно быть зарегистрированными на сайте «провайдера идентификации» OpenID (предоставляющего идентификатор).Так как технология OpenID децентрализованная, то любой сайт может использовать программное обеспечение OpenID в качестве средства входа; OpenID решает проблему не полагаясь на централизованный сайт для подтверждения подлинности пользователя.
(текст из Википедии: OpenID)

Принцип работы OpenID

  • С OpenID ты авторизуешься только один раз за сеанс работы – на сайте провайдера.
  • OpenID использует твое доменное имя как логин
  • Поэтому твой логин уникален и может быть использован только тобой (если увидите coldflame.in.ua – это я и никто другой)
  • Если сайт поддерживает OpenID, то где-то около ввода логина/пароля, должно быть поле OpenID, куда вводится OpenID-логин, то есть твое доменное имя:

    Форма OpenID-логина

  • Провайдеры бывают разные (у нас будет свой)

Преимущества OpenID

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

Установка собственного провайдера OpenID

Мой OpenID

Ладно, хватит теории!Провайдеров OpenID много, но если у тебя есть PHP-хостинг, можно установить свой собственный – ни от кого не зависеть, Пригодятся базовые знания PHP, на уровне «поменять значение строковой константы».

Будем использовать библиотеку phpMyId. Хотя библиотека – это громко сказано. phpMyId – это однопользовательский провайдер OpenID, написанный на PHP. Устанавливается еще проще, чем хваленый WordPress.

Что тебе понадобится?

  • Дистрибутив phpMyId
  • PHP-хостинг
  • отключенный safe mode
  • Базы данных не нужны (на одного пользователя? зачем?)

Установка

  1. Распаковываем дистрибутив на сайт в отдельную папку, например, /openid
  2. Переименовываем MyId.config.php в index.php
  3. Открываем его. Наблюдаем два массива с конфигурацией. Нам строго необходимо указать
    • auth_username – твой логин (любой, не имеет значения)
    • auth_password – отдельным скриптом считаем хеш, например, так:
      <?php=md5('твой-логин-из-предыдущего-пункта:phpMyID:твой-пароль')?>

      получаем строку типа 37fa04faebe5249023ed1f6cc867329b, вот ее и вписываем в конфиг.

    • idp_url – это URL твоего провайдера – раскомментируй и впиши URL файла index.php, например, у меня – http://coldflame.in.ua/openid/index.php (вроде бы и не необходимая настройка, но без нее у меня не заработало)

    На это настройка провайдера закончена! Осталось привязать его к твоему доменному имени.

  4. Для этого редактируем index твоего домена (попросту, страницу, которая будет открываться при вводе твоего OpenID-логина в обозреватель)
  5. В <head> этой страницы добавляем две строчки. Важно – URL должен быть путем к файлу, т.е. заканчиваться на index.php, без этого у меня не заработало.
          <link rel="openid.server" href="URL твоего провайдера" />
          <link rel="openid.delegate" href="URL твоего провайдера" />
  6. Поздравляю, теперь можешь использовать свой домен как OpenID-логин!

Для желающих покопаться в настройках подробнее описано в README к библиотеке.

Проверяем

Проще всего проверить исправность своего OpenID OpenID Checkup – достаточно ввести туда свой логин (я ввожу http://coldflame.in.ua), и следовать инструкциям. Или оставь Open-ID комментарий на этот пост – пользователи ЖЖ могут сделать это без лишних хлопот. :)

Комментарии

  • boyko.km.ua/alexey 6 сентября 2008

    услышал про phpMyID не отсюда, но сделал примерно так же

  • mazzagavazza.ya.ru 6 сентября 2008

    Проверим как, как работая OpenID на ya.ru :)

  • http://massalov.com 12 декабря 2008

    Спасибо за информацию. Проверим, как работает.

  • http://aivean.com 25 декабря 2008

    Тест

  • http://aivean.com 25 декабря 2008

    Кстати, в readme там написано не

    md5(‘твой-логин-из-предыдущего-пункта|phpMyId|твой-пароль’)

    а

    md5(‘твой-логин-из-предыдущего-пункта:phpMyId:твой-пароль’)

    Двоеточия вместо палочек.

  • http://valera.ws 25 декабря 2008

    У меня работает вариант с разделителем двоеточие ( : ), вариант с | проверять не стал.

    Замечу еще, что средний параметр из хэша — realm. Т.е., если вы его меняли в конфиге, надо и в хэшэ подменить.

    Ну и генерить хэш наверное все же проще так:
    echo -n ‘login:realm:password’ | openssl md5

  • www.000.dj 25 декабря 2008

    Test

  • 000@000.dj 25 декабря 2008

    Test

  • zhuzhkov.baklajan.ru 28 декабря 2008

    tst

  • http://baka.name 30 декабря 2008

    test
    > У меня работает вариант с разделителем двоеточие ( : ),
    > Ну и генерить хэш наверное все же проще так:

    Ага. Это всё в README написано ^_^

  • http://angrycat.info 14 января 2009

    Спасибо, супер. Всё заработало с перврго раза.

  • vp.klimenko.su 18 января 2009

    test

  • Bred 20 января 2009

    test

  • saygak.com 28 января 2009

    hello!

  • dmitritsoy.ya.ru 3 февраля 2009

    test еще!

  • http://gritsinger.com 10 февраля 2009

    Проверка

  • http://okolobaxa.ru 15 февраля 2009

    За свободными технологиями будующее!

  • blacknot 28 февраля 2009

    Спасибо за такой простой пример, хорошо описано что надо сделать и все будет работать, одно но:

    у меня $GLOBAL отключен, пришлось весь код перефигачить, чтобы заработало.

  • http://albert-ru.org.ua 2 марта 2009

    привет, автор
    эт всё конечно замечательно (хотя бы то, что я авторизован своим сайтом), однако беды с ЖЖ («no_identity_server: The provided URL doesn’t declare its OpenID identity server.») не дают покоя

  • albert-ru.livejournal.com 2 марта 2009

    Кхм…
    Поделишься секретом?))

  • http://uacollections.com.ua 23 марта 2009

    тест

  • http://yakto.ru 11 апреля 2009

    Спасибо за чекер openid – это как раз то, что я искал. И на блоге вашем зачитался – куча интересной инфы. :)

  • pomaskin.com 30 мая 2009

    А где еще можно потестировать openid =)

  • http://pomaskin.com 16 июля 2009

    Тестирую…

  • fotorealist.com 24 сентября 2009

    Вроде работает =)

  • koreec.net 4 января 2010

    извините, но тест …

  • Леонид Шевцов 1 марта 2010

    так работает же :)

  • lybin.org 18 апреля 2010

    Пробовал этот метод, но так и не заработало, в итоге остановился на плагине к WP OpenID и все ок:)

  • Jim_Di 19 апреля 2010

    При генерации пароля необходимо писать phpMyID вместо phpMyId. Исправьте, пожалуйста.

Оставить комментарий

  • (или OpenID)
  •