Твой собственный OpenID

25 января 2008, обновлена 05 мая 2010

Логотип 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 комментарий на этот пост – пользователи ЖЖ могут сделать это без лишних хлопот. :)



Тридцать два комментария. Напиши еще один
  1. E81e8ef11116a66f74e64fee5467eb4e # 06 сентября 2008 boyko.km.ua/alexey (boyko.km.ua/alexey) написал:

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

  2. 94bb755ab54b6cfe9e4e777a2dae83ce # 06 сентября 2008 mazzagavazza.ya.ru (mazzagavazza.ya.ru) написал:

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

  3. 5b2473bbff8279a3cb5bed72782e0c82 # 12 декабря 2008 http://massalov.com (massalov.com) написал:

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

  4. Dc0b8c880ff11ab97255911dad2a78d2 # 25 декабря 2008 http://aivean.com (aivean.com) написал:

    Тест

  5. Dc0b8c880ff11ab97255911dad2a78d2 # 25 декабря 2008 http://aivean.com (aivean.com) написал:

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

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

    а

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

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

  6. 097e5a661e2f144a16967fcc61f64095 # 25 декабря 2008 http://valera.ws (valera.ws) написал:

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

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

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

  7. 25ddaadb494ae0f66ddae1c83d2ce979 # 25 декабря 2008 www.000.dj (000.dj) написал:

    Test

  8. 799e6ee6ab4e6019b33410840ca8020e # 25 декабря 2008 000@000.dj написал:

    Test

  9. Ee5fbdc12f47e2fbc85fa8056d808106 # 28 декабря 2008 zhuzhkov.baklajan.ru (zhuzhkov.baklajan.ru) написал:

    tst

  10. 1096c8413efc591940026937bd49fa83 # 30 декабря 2008 http://baka.name (baka.name) написал:

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

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

  11. Ace4aba99a677ec866abf5e87c78ec56 # 13 января 2009 http://angrycat.info (angrycat.info) написал:

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

  12. 43c947a4880736abb8132e9df7931026 # 18 января 2009 vp.klimenko.su (vp.klimenko.su) написал:

    test

  13. 7bd249dc852e24f7d95f0628d99395b4 # 20 января 2009 Bred написал:

    test

  14. C05ac195eb12c7d6bbf5db3ad8bd8448 # 28 января 2009 saygak.com (saygak.com) написал:

    hello!

  15. 511e6d8b3a9b53ac46751d8e8b51ae66 # 03 февраля 2009 dmitritsoy.ya.ru (dmitritsoy.ya.ru) написал:

    test еще!

  16. Ddd9ea5e9b60b769952a3f6281d3575d # 10 февраля 2009 http://gritsinger.com (gritsinger.com) написал:

    Проверка

  17. 19ea0d17808ba8124fb70127f03798d4 # 15 февраля 2009 http://okolobaxa.ru (okolobaxa.ru) написал:

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

  18. 3dd5e69a4e388b3ca94ec8c7f9f15e05 # 28 февраля 2009 blacknot (webnext.ru) написал:

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

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

  19. 465b4c404e89e0f288922de854eafb83 # 02 марта 2009 http://albert-ru.org.ua (albert-ru.org.ua) написал:

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

  20. De8ed45740bece7cf6f47b86a2028529 # 02 марта 2009 albert-ru.livejournal.com (albert-ru.livejournal.com) написал:

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

  21. Cc9f972ce98f20a1fe6451218e7c90b3 # 23 марта 2009 http://uacollections.com.ua (uacollections.com.ua) написал:

    тест

  22. Cbbc9c0dca08b6802121785f484ab1fa # 11 апреля 2009 http://yakto.ru (yakto.ru) написал:

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

  23. 8d43872ac61c72922fc4ba02c0da175c # 30 мая 2009 pomaskin.com (pomaskin.com) написал:

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

  24. Bd34569b818323c7bd54e2a83366c89c # 16 июля 2009 http://pomaskin.com (pomaskin.com) написал:

    Тестирую…

  25. 15777ec320cd20ffa2d691c425eb7887 # 23 сентября 2009 fotorealist.com (fotorealist.com) написал:

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

  26. 0b04082a3ca615c5e21968042c3ac50e # 04 января 2010 koreec.net (koreec.net) написал:

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

  27. 777894ea5153122bfa6b83f5bbf23622 # 01 марта 2010 Леонид Шевцов (автор) написал:

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

  28. B60df8de18a5b0b223bf324e73b00ff1 # 18 апреля 2010 lybin.org (lybin.org) написал:

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

  29. D3cc02a471ac2d64c65ea0a8ba260339 # 19 апреля 2010 Jim_Di написал:

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

  30. Acca83e3249440682e220834d004c233 # 30 октября 2010 http://arvis.su (arvis.su) написал:

    Кстати, есть вариант проще – можно использовать стороннего провайдера (myopenid.com, lj.ru) только в хеад страницы внести соответствующие изменения

    1. 777894ea5153122bfa6b83f5bbf23622 # 30 октября 2010 Леонид Шевцов (автор) написал:

      Можно, конечно, но тогда авторизация зависит от провайдера, а так если сервер работает, то и авторизация тоже.

  31. 422e412cd5623db3b78bc4b7facdb19b # 09 сентября 2011 Ильмир (webrothers.biz) написал:

    Добрый день! А можно с другими сервисами урок? к примеру мой мир, фесебук

(нужна разметка?)

  • **жирный**
  • > цитата

отменить