Создание и проверка своего 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 г., категория: для вебмастеров.
Что-то непонятно или не получается?
Оставьте свои пожелания или вопрос в виде комментария к статье. Информация о новых комментариях сразу приходит ко мне на почту, и я постараюсь ответить на ваш вопрос как можно скорее!
Есть вопрос по схожей теме?
Попробуйте поискать по сайту (форма поиска находится наверху страницы). Кроме того, можно задать мне вопрос через форму обратной связи.
Нужна компьютерная помощь?
Напишите мне о своей проблеме через форму обратной связи, я постараюсь помочь. Если же проблему невозможно решить удаленно, вы можете обратиться к специалистам, чей баннер расположен наверху.
| ← Использование торрентов | Windows script host или приколы нашего городка → |
Комментарии
1# |
Вот я принял Ваше приглашение и пришел на Ваш блог. Могу сказать, что очень много интересного и полезного, а также неизвестного для меня ранее. Сейчас буду делать себе свой собственный OpenID по Вашей инструкции. Спасибо. Заходите и Вы ко мне еще раз и раз, приятно общаться с Вами и получать от Вас полезные советы. Благодарю. |
2# |
Да, то что в качестве пути к своему OpenID придется прописывать путь к файлу index - это не удобно, надо как-то заполучить короткий и красивый номер, чтобы он всегда был в памяти. |
3# |
Sander, а можно технологию создания красивых адресов описать в своем блоге, со ссылкой на Ваш, конечно. |
4# |
Отлично, рад, что статья пригодилась. На Ваш блог подписался, буду читать.
|
5# |
Здравствуйте, спасибо за статью. А не подскажите, где конкретно меняются значения auth_username, auth_password, nickname и email? |
6# |
В архиве, который можно у меня скачать, есть файл index.php
|
7# |
А понял, это не в MyID.php а в MyID.config.php находится |
8# |
> А понял, это не в MyID.php а в MyID.config.php находится
|
9# |
Большое спасибо за статью!
|
10# |
О! Почитал комменты внимательно, оказывается файл был намеренно переименован. |
11# |
Обращаю внимание, что после отправки коммента на вашем сайте вылезло сообщение:
|
12# |
В ЖЖ мой ОпенИД был принят, а вот афиша.ру не хочет принимать. Интересно почему? Возможно они только логины с нескольких "больших" сайтов принимают типа ЖЖ и фейсбука... |
13# |
clubfonar.ru
|
14# |
Вроде бы исправил про Warning, еще раз спасибо |
15# |
Варнингом не хотел пугать пользователей (думал примешь к сведению и просто удалишь коммент после прочтения), просто надо же как-то дать знать веб-мастеру. Просто не смог, так сказать пройти мимо, хотя это было бы конечно же проще.
|
16# |
По поводу афиши даже интересно.
|
17# |
Пробовал тэги переставлять и в самое начало и в самый конец - не помогает. |
18# |
Странно. Тогда не могу понять, где отличие. Попробую повозиться, когда осяду в Москве. |
19# |
Проверка Open ID |
20# |
glubina-lzhi
|
21# |
Уважаемый Сандер!
|
22# |
Александр, нужно открыть командную строку. В windows это делается так: нажимаются одновременно win+r, в окошке вводится cmd, нажимаете ok.
|
23# |
Скачанный файл по вашей ссылке md5.exe переместил на диск C. Путём простого копирования. При клике на него открывается пустое окно командной строки с мигающим пунктиром.
|
24# |
Александр, а вы поставили пробел между md5 и -d?
|
25# |
Sander - ну да, я понимаю, что латиницей... Глуп я конечно, но не до такой степени :-)
|
26# |
Получилось!!!
|
27# |
Отлично, значит, продвинулись!
|
Нужна компьютерная помощь?
Задайте свой вопроc
на нашем новом проекте!
Нужна компьютерная помощь?
Задайте свой вопроc
на нашем новом проекте!
