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

Создание и проверка своего 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" присоединился к сайту.

← Качать с торрентовWindows script host →
comments powered by Disqus