Ваше местоположение в сети:
Рубрика:
Путеводитель по интернету

Создание и проверка своего OpenID

Я уже писал ранее о возможности использования OpenID для авторизации на различных сайтах, а также о том, что у многих из вас свой OpenID, скорей всего, есть - почта Яндекса и Google, живой журнал и многое другое. Теперь мы поговорим о более интересной теме - создании своего собственного OpenID. Правда, для этого уже понадобится наличие собственного сайта.

Начать стоит с того, что технология OpenID позволяет осуществлять делегирование прав на авторизацию. Суть делегирования проста. Допустим, у вас уже есть один идентификатор OpenID, например, на живом журнале. А вам хочется сделать OpenID с более красивым адресом, например, http://sander.su/. Тогда вам достаточно по желаемому Web-адресу разместить "объявление о делегировании", указывающее две вещи: сервер, проводящий авторизацию и уже имеющийся OpenID. Тогда при попытке авторизации где-либо при помощи http://sander.su/, та система автоматически авторизуется при помощи живого журнала, но в результате в качестве OpenID высветится красивый адрес.

Объявление о делегировании - это всего лишь два link rel тэга в заголовке html-файла. Тем самым, для того чтобы иметь свой красивый OpenID достаточно лишь иметь свой сайт и прописать эти самые тэги. Приведу их значения для наиболее популярных OpenID-провайдеров.

  • Для живого журнала (замените __sander__ на свой ник):
    ‹link rel="openid.server" href="http://www.livejournal.com/openid/server.bml" /›
    ‹link rel="openid.delegate" href="http://users.livejournal.com/__sander__" /›
  • Для liveinternet (замените yourname на свой ник):
    ‹link rel="openid.server" href="http://www.liveinternet.ru/openid.php" /›
    ‹link rel="openid.delegate" href="http://http://www.liveinternet.ru/users/yourname" /›
  • Для почты Яндекса (замените yourname на начало адреса вашей почты)
    ‹link rel="openid.server" href="http://openid.yandex.ru/server.xml" /›
    ‹link rel="openid.delegate" href="http://openid.yandex.ru/users/yourname" /›
  • Для специального сервиса, предоставляющем OpenID
    ‹link rel="openid.server" href="http://www.myopenid.com/server" /›
    ‹link rel="openid.delegate" href="http://samruby.myopenid.com/" /›

Описанный способ всем хорош, но меня не устраивает. Почему если у меня уже есть сайт, мою личность должен подтверждать какой-то посторонний живой журнал? Поэтому расскажу, как можно создать своего собственного поставщика OpenID. Способов, конечно, много, но ставить большой сервер ради одного пользователя - это как стрелять их пушки по воробьям. Имеется более элегантное решение - поставить сервер, предоставляющий один единственный идентификатор OpenID. В таком случае и установка становится крайне простой - достаточно, чтобы на вашем сайте была включена поддержка php, желательно, с включенным модулем bcmath.

Скачайте phpMyID с этого сайта или с сайта производителя.. Программа свободная, распространяется по лиценции GPL. Раззипуйте. Нужно отредактировать файл index.php. Поля, которые необходимо заполнить, я отметил многократными восклицательными знаками.

  • auth_username: логин, который будет спрашивать ваш сервер
  • auth_password: результат шифрования алгоритмом MD5 строки "логин:phpMyID:пароль"
  • nickname: некоторые сайты отображают nickname вместо адреса сайта
  • email: электронная почта, не обязательно

Программу для шифрования строки по алгоритму md5 можно скачать здесь или с сайта разработчика. Синтаксис в командной строке: md5 -d"text", где text - шифруемая строка.

После этого вы можете закинуть директорию со скриптом на сервер. Проверьте, что ваш OpenID работает, например, здесь или залогинившись на моем сайте. Однако, в качестве OpenID идентификатора приходится указывать путь к файлу index.php, что, наверное, не совсем то, что вы хотели. Завершаем стандартным способом - применяем делегирование. Оба link rel-тэга openid.server и openid.delegate должны указывать на ваш файл index.php.

Как я уже писал ранее, Google изменил стандарт OpenID 1.0. Пунктов 3-4 при стандартной авторизации по OpenID 1.0 быть не должно. Поэтому напрямую аккаунты Google использовать для OpenID атвторизации в старом стиле невозможно. Даже если у вас сайт от Гугла, рекомендую поставить OpenID-провайдера, как было показано выше. Однако Google поддерживает стандарт Open 2.0 c Directed Identity. Любой пользователь Google может ввести в качестве своего идентификатора специальный адрес: https://www.google.com/accounts/o8/id (не надо никуда подставлять свой идентификатор!). Google сам определяет, кто ты, я возвращает информацию на сайт. Правда, даже Google Friend Connect обрабатывает эту информацию странным образом - пишет, что "id" присоединился к сайту.

Дата: 24 февраля 2009 г., категория: для вебмастеров.

Хотите знать все об интертете?

Введите свой адрес электронной почты чтобы подписаться на обновления!


Уже 552 постоянных читателя! Присоединяйтесь!


Доставляется при помощи FeedBurner. Никакого спама. Всегда можно отписаться!

Что-то непонятно или не получается?
Оставьте свои пожелания или вопрос в виде комментария к статье. Информация о новых комментариях сразу приходит ко мне на почту, и я постараюсь ответить на ваш вопрос как можно скорее!

Есть вопрос по схожей теме?
Попробуйте поискать по сайту (форма поиска находится наверху страницы). Кроме того, можно задать мне вопрос через форму обратной связи.

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

← Использование торрентовWindows script host или приколы нашего городка →

Комментарии

1#

eavasi
4 июня 2009 г. 10:33:02

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

2#

eavasi
4 июня 2009 г. 10:51:34

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

3#

eavasi
4 июня 2009 г. 11:08:42

Sander, а можно технологию создания красивых адресов описать в своем блоге, со ссылкой на Ваш, конечно.
 

4#

Sander
4 июня 2009 г. 11:37:54

Отлично, рад, что статья пригодилась. На Ваш блог подписался, буду читать.
Что касается "прописывать путь к index.php", посмотрите, с каким OpenID я оставил у Вас комментарий. Там ведь адрес просто указывает на главную страницу блога. Для этого я прописал на главной
<link rel="openid.server" href="http://it.sander.su/id/index.php">;
<link rel="openid.delegate" href="http://it.sander.su/id/index.php">;
в шапке

Описать технологию со ссылкой - конечно, буду рад!
Только у меня robots.txt защищает от hotlinking, если будете давать ссылку на скачивание, указывайте на мой download.php или загрузите файл к себе на сайт, а то прямая ссылка работать не будет.
 

5#

Diomas
9 июля 2009 г. 20:30:26

Здравствуйте, спасибо за статью. А не подскажите, где конкретно меняются значения auth_username, auth_password, nickname и email?
 

6#

Sander
9 июля 2009 г. 22:31:55

В архиве, который можно у меня скачать, есть файл index.php
Открываете его любым текстовым редактором.
Ищите много восклицательных знаком подряд.
Там и меняйте )
 

7#

Diomas
10 июля 2009 г. 01:13:49

А понял, это не в MyID.php а в MyID.config.php находится
 

8#

Sander
10 июля 2009 г. 09:40:30

> А понял, это не в MyID.php а в MyID.config.php находится
А, ну да, точно.
Я просто его в своем архиве в index.php переименовал чтобы если кого в эту директорию занесет, он все равно на авторизацию попал
 

9#

clubfonar.ru
26 июля 2009 г. 01:37:04

Большое спасибо за статью!
Теперь мой OpenID - это мой сайт!
Хочется только обратить внимание, что в версии, скачанной с сайта разработчика, есть некоторые отличия. Как минимум вместо файла index.php теперь используется MyID.config.php
Еще раз благодарствую ;)
 

10#

clubfonar.ru
26 июля 2009 г. 01:38:33

О! Почитал комменты внимательно, оказывается файл был намеренно переименован.
 

11#

clubfonar.ru
26 июля 2009 г. 01:52:15

Обращаю внимание, что после отправки коммента на вашем сайте вылезло сообщение:
Warning: ********************************************
 

12#

clubfonar.ru
26 июля 2009 г. 03:10:31

В ЖЖ мой ОпенИД был принят, а вот афиша.ру не хочет принимать. Интересно почему? Возможно они только логины с нескольких "больших" сайтов принимают типа ЖЖ и фейсбука...
 

13#

Sander
26 июля 2009 г. 11:56:16

clubfonar.ru
Во-первых, очень рад, что статья пригодилась!
И сайт ваш очень приглянулся, сейчас пойду регистрироваться.
С переименованием файла - все точно, переименован специально.
Очень странно, что не прошла авторизация на Афише - у меня работает!
Про аватар. То, что в файле он указан, только означает, что вы готовы отдать информацию об аватаре по sreg. А вот будет ли эта информация востребована клинентом - неизвестно. ЖЖ точно ее игнорирует.
Спасибо за информацию о Warning. В принципе, не критично, но зачем пользователей пугать. Там очищалась кэшированная лента rss комментариев, а если ее нет, то и очищаться нечему, вот и ругается.
Кстати, rss - еще одна технология, которую СТОИТ освоить, например, чтобы следить за ответами здесь.
 

14#

Sander
26 июля 2009 г. 15:24:50

Вроде бы исправил про Warning, еще раз спасибо
 

15#

clubfonar.ru
26 июля 2009 г. 22:19:15

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

Насчет аватар - идею понял.
Насчет афиша.ру - как появится время надо будет сверить мой конфиг с твоим, чтобы попытаться понять в чем проблема. Хотя оказывается конфиг чужой то нельзя просто открыть и посмотреть :)

Буду здесь тогда постить свои настройки...

Еще вчера пробовал комментить блог на блоггер.ком - при публикации коммента в качестве имени берется полный путь к конфиг-файлу :( Т.е. имя выглядит как http://mysite.com/MyID.Config.php чьто совсем не здорово конечно же. Но было уже под утро и не было сил анализировать.
Удачи!
 

16#

Sander
26 июля 2009 г. 23:16:19

По поводу афиши даже интересно.
Сейчас проверил, sander.su принимает, it.sander.su - нет.
Конфиги одинаковые.
Моя версия - влияет положение rel тэгов (то есть они должны быть в самом начале файла). Проверишь? У меня тут интернет плохой. Мне кажется, до конфига дело не доходит.

Что касается странной страницы вместо стартовой в ссылке - один раз я тоже с таким столкнулся. В принципе решением бы было встроить весь php код в свой основной index.php, но это нужно возиться.
 

17#

Andrewsha
3 августа 2009 г. 17:42:27

Пробовал тэги переставлять и в самое начало и в самый конец - не помогает.
 

18#

Sander
4 августа 2009 г. 20:16:23

Странно. Тогда не могу понять, где отличие. Попробую повозиться, когда осяду в Москве.
 

19#

http://glubina-lzhi.blogspot.com/
10 августа 2009 г. 22:53:01

Проверка Open ID
 

20#

Sander
11 августа 2009 г. 16:56:01

glubina-lzhi
Поздравляю, работает, прошло авторизацию и откомментировалось без попадания на модерацию.

P.S.
Так как вы указали адрес сайта в имени а не поле url, то и ссылка получилась не активная
 

21#

Александр
22 января 2010 г. 13:24:34

Уважаемый Сандер!
реально круто написано и понятно ровно до тех пор, до той строки "Программу для шифрования строки по алгоритму md5 можно скачать"
Да, скачал.
А дальше совершенно не понятно.
Что за синтаксис, как его реально прописывать, только вы и можете понимать, обычный смертный, типа меня, ну никак не сообразит. Реально уже бьюсь над этим более двух часов. И, совершить что-то путное совсем не получается.

Может, сможешь более детально пояснить что делать с командной строкой? Кстати, пришел к вам с блога Белой шляпы, автор которого порекомендовал к вам обратится за советом, как ведущему специалисту в области openid.
 

22#

Sander
22 января 2010 г. 13:48:43

Александр, нужно открыть командную строку. В windows это делается так: нажимаются одновременно win+r, в окошке вводится cmd, нажимаете ok.
Теперь вводите команду
md5 -d"логин:phpMyID:пароль"
и получаете требуемую строку.
Если же система ругается, что не знает, что такое md5, то скопируйте md5.exe, скажем, прямо на диск с и наберите c:\md5 вместо md5
 

23#

Александр
22 января 2010 г. 14:21:17

Скачанный файл по вашей ссылке md5.exe переместил на диск C. Путём простого копирования. При клике на него открывается пустое окно командной строки с мигающим пунктиром.

Ничего не происходит, Система не ругается, но и ничего не происходит. последовательность действий:
Открыл командную строку >win+r, > cmd, > ok ( ok - это enter ввод?)
Ввёл команду:
с:\md5-d"ИМЯ:phpMyID:ПАРОЛЬ" > enter
Курсор опустился на строчку ниже и всё! Никакой требуемой строки не появилось! Блин, я конечно же туп в этом, но не до такой же степени. :-)
Что такое требуемая строка, как она хотя бы выглядит? каков её внешний вид?
 

24#

Sander
22 января 2010 г. 15:05:22

Александр, а вы поставили пробел между md5 и -d?
И еще, вместо ИМЯ и ПАРОЛЬ нужно подставить ваши имя и пароль, желательно латиницей и без пробелов.
Строка - это будет просто странная последовательность символов.
Пробуйте, пишите дальше
 

25#

Александр
22 января 2010 г. 16:42:19

Sander - ну да, я понимаю, что латиницей... Глуп я конечно, но не до такой степени :-)
Пробел поставил.
Только не уверен, что с:\md5 -d"admin:phpMyID:пароль латиницей" > ok > ничего не происходит. Пишет, что: Системе не удаётся найти указанный диск.

Надо понять.
в том месте md5 -d"логин:phpMyID:пароль"
ЛОГИН - это что? логин админа на моём блоге ВПР или любое (новое) имя пользователя
ПАРОЛЬ - это пароль админа ВПР или, просто новый пароль нового пользователя?
Очень хочется понять и попробовать работу вашей системы.

Вот еще вопрос.

* auth_username: логин, который будет спрашивать ваш сервер -

ЧТО значит будет спрашивать ваш Сервер? У меня сервера нет, он у провайдера. В общем, сплошные вопросы... Я, достаточно, уверенный пользователь инета, даже php файлы редактирую, когда необходимо (методом тыка, правда, но не боюсь этого) html слегка знаю - основы.... Но, ваш мануал по настройке - тёмный лес, заставляет задавать кучу вопросов.


* auth_password: результат шифрования алгоритмом MD5 строки "логин:phpMyID:пароль"

* nickname: некоторые сайты отображают nickname вместо адреса сайта -
Это важная информация? Она существенна? Что это значит некоторые сайты отображают nickname вместо адреса сайта. Какие сайты ? Вот у меня вы знаете какой сайт, вернее его адрес. Так в этот ник нэйм что вписывать?

* email: электронная почта, не обязательно - С почтой всё ясно...
 

26#

Александр
22 января 2010 г. 16:49:44

Получилось!!!
командная строка выдала ряд цифр ... типа этого 86E0AEA86E0AEA...
Что теперь с этим делать?
 

27#

Sander
22 января 2010 г. 17:46:57

Отлично, значит, продвинулись!
По поводу сервера - процесс будет происходить так - при попытке авторизоваться по OpenID по url сайта тебя будет перебрасывать на твой сайт и будет выводиться окошко, спрашивающее логин и пароль. Вот это как раз auth_username и пароль, введенный при создании строки md5. Эти имя и пароль никак ни с чем не связаны, можно использовать любые.
Вот. А раз строка получилась, ее теперь можно скопировать в конфигурационный файл и копировать все это на хостинг. Теперь путь к файлу index.php должен работать как OpenID - идентификатор.
Получается?
 

У вас есть вопрос не по теме статьи?
Нужна компьютерная помощь?
Задайте свой вопроc
на нашем новом проекте!

Подписаться на: комментарии к статье (rss), комментарии к статье (e-mail)

[*] Авторизоваться при помощи профиля Google (и не только)
Самые активные участники сайта:

Хотите разместить здесь свою аватарку? Авторизуйтесь, загружайте картинку и комментируйте!
Имя:

E-mail (если хотите подписаться на комментарии):

Сайт (не обязательно):

Я - робот! (снимите галочку, если это не так)
Для блоггеров: если вы хотите чтобы ваша ссылка индексировалась поисковыми системами, вам нужно авторизоваться при помощи Google Friend Connect и написать осмысленный комментарий по теме. В таком случае я переведу ваш аккаунт в разряд "trusted". Комментарии пользователей с проверенным аккаунтом не попадают на модерацию, ссылки индексируются, а рядом с ником стоит значок с зеленой галочкой. Да, модерацию могут пройти только ссылки IT-тематики! Внимание: если вы не авторизуетесь, я не смогу сделать вашу ссылку активной даже если мне понравятся ресурс и комментарий!
Комментарий:

Подписаться на  комментарии к статье (rss), комментарии к статье (e-mail)

У вас есть вопрос не по теме статьи?
Нужна компьютерная помощь?
Задайте свой вопроc
на нашем новом проекте!