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

Создание и проверка своего 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 г., категория: для вебмастеров и не только.

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

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



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

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

Комментарии

1#

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

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

2#

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

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

3#

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

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

4#

Sander ok
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 ok
9 июля 2009 г. 22:31:55

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

7#

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

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

8#

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

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

9#

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

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

10#

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

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

11#

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

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

12#

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

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

13#

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

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

14#

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

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

15#

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

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

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

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

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

16#

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

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

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

17#

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

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

18#

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

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

19#

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

Проверка Open ID
 

20#

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

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

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

21#

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

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

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

22#

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

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

23#

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

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

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

24#

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

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

25#

Александр ok
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#

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

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

27#

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

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

28#

CyberMax
24 июля 2010 г. 18:01:32

Сделал OpenID как написано тут - sindicollo.blogspot.com/2007/12/openid.html - потому что так проще показалось чем как у вас написано. Так у вас здесь с таким OpenID не получается авторизоваться, пишет:

"Приносим свои извинения...
Не удалось обработать ваш запрос. Повторите попытку или вернитесь немного позже."

И ещё:

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

Для этого шифрования можно также использовать сервис - md5.rednoize.com - правда только, в отличии от вашей программы для шифрования, там скрипт выдает MD5-хеш где все буквы в нижнем регистре как и всегда. А программа выдает такую же строку только где все буквы в верхнем регистре. Или в этом случает это не имеет значения?
 

29#

Sander ok
25 июля 2010 г. 00:38:49

мне кажется, регистр здесь значения не имеет...
 

30#

Anna
25 июля 2010 г. 01:25:36

Здравствуйте, спасибо за подробную инструкцию, все понятно, сделала, мой сайт выбранный логин-пароль принимает, но сторонние не хотят совсем...
либо серверы типа афиши не принимают пароль,
либо типа жж пишут
Ошибка
При обработке вашего запроса возникли ошибки. Пожалуйста, вернитесь на предыдущую страницу, сделайте необходимые изменения и отправьте данные еще раз.
no_identity_server: The provided URL doesn't declare its OpenID identity server.

не знаете что делать в таком случае?
 

31#

achadidi
25 июля 2010 г. 02:42:34

попробовала опичанный вами выше способ авторизации через жж, но жж не хочет авторизовать чужие сайты. получилось только с myopenid.com, только надо бы поменять уголки на <
 

32#

Sander ok
25 июля 2010 г. 23:41:44

Смотрю, в результате все получилось, пусть и через myopenid
А ЖЖ, вроде бы, должен принимать чужие, то только с целью создания нового пользователя, к старому привязать нельзя
 

33#

Anna
29 июля 2010 г. 01:21:03

к сожалению жж просто не пускает даже в аккаунт зарегиный на openid юзера, он усеченный.
 

34#

Oleg
27 октября 2010 г. 19:54:52

в жж не работает
 

35#

Sander ok
27 октября 2010 г. 20:20:49

Странно, раньше работало
 

36#

Natta
20 марта 2011 г. 00:40:32

Привет!
у меня блог на вордпрессе, пыталась делегировать myopenid, чтобы адрес красивый был
Установила в header блога так, как ты советовал
‹link rel="openid.server" href="http://www.myopenid.com/server"; /›
‹link rel="openid.delegate" href="http://samruby.myopenid.com/"; /›
Не знаю почему, но не работает :(
все равно при оставлении комментов появляется мой "некрасивый" openid
теперь не пойму - может я сам OpenId как-то неверно настроила? или что еще может быть?
 

37#

Sander ok
20 марта 2011 г. 02:30:22

а там точки с запятыми что-ли? может, они мешают?
 

38#

Natta
21 марта 2011 г. 02:02:39

Привет! неа, точек с запятыми нет - это я скопировала криво как-то :)
я уже эти две строчки поменяла на
<link rel="openid.server openid2.provider"
href="http://www.myopenid.com/server"; />
<link rel="openid.delegate openid2.local_id"
href="http://youraccount.myopenid.com/"; />
<meta http-equiv="X-XRDS-Location"
content="http://www.myopenid.com/xrds?username=youraccount.myopenid.com"; />

в myopenid такой скрипт заявлен типа. И все равно не работает!
Как я изначально делала:
1. завела openid
2. установила плагин OpenID и XRDS-simple
3. зарегила свой домен на Openid, сделала верификацию
4. Вставила код между хедарами
5. Внутри вордпресса, в настройке OpenID, указала делегирование моего домена
Сейчас просмотрела исходный код блога - получается, плагин OpenId дублирует делегирование. Попробовала у брать делегирование из плагина - все равно не получается. Потом наоборот удалила код (оставив делегирование из плагина) - и все равно не получается :(
 

39#

Sander ok
26 марта 2011 г. 18:49:39

Прошу прощения, что не отвечаю.
Я вас не игнорирую, просто времени изучить детально нет, а так идей пока не возникло...
 

40#

limonova.com
8 апреля 2011 г. 23:56:59

Ураааа! Работает! Причем везде!!! Народ, при авторизации выбирайте провайдера OpenID. А про непонятки с прописями в конфиге (если вам здесь выше не понятно) читайте README в директории со скриптом... Спасибо огромное владельцу данного ресурса! Много интересного здесь встретилось!
 

41#

subj.biz
13 апреля 2011 г. 00:52:59

А где можно узнать список поддерживаемых сайтов? Или как это определить на самом сайте стоит ли у него OpenID
 

42#

Sander ok
13 апреля 2011 г. 16:39:40

Посмотрите, например, здесь
http://openid.net/get-an-openid/start-using-your-openid/
 

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

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

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

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

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

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

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