Популярно об OpenID

Если коротко, то OpenID — это ваша цифровая подпись, которую можно использовать вместо логина и пароля на всех сайтах, поддерживающих эту систему. Если у вас есть аккаунт на LiveJournal или DeadJournal или любом другом сайте, который может выступать в качестве OpenID сервера, значит эта подпись у вас уже есть. Можете попробовать оставить комментарий к посту с ее помощью. Для этого, если вы пользователь LiveJournal или DeadJournal, выберите внизу этой страницы соответствующий пункт в меню и введите ваш ник, а если пользователь какого-нибудь другого сервиса, то выберите пункт Other OpenID и введите адрес вашего аккаунта. Должно получиться, если нет, дайте мне знать. На самом деле, для использования OpenID этой информации достаточно.
А теперь, когда почти все уже ушли, оставшимся бездельникам и прочим любопытствующим предлагаю вольный перевод описания системы с официального сайта.


Что это такое?

Это децентрализованая система идентификации. Такая, которая не развалится полностью, если какая-нибудь компания начнет себя плохо вести или просто выйдет из бизнеса.

OpenID идентификатор это просто URL. Вы можете иметь несколько идентификаторов, точно также как у вас может быть несколько URL. Все что делает OpenID это предоставляет способ доказать, что вы действительно являетесь владельцем данного URL (идентификатора). И делает это, не передавая никому вашего пароля, вашего email и всего того, что бы вы не хотели передавать. Вообще нет никакого обмена пользовательскими данными, ваши данные это только ваш URL-идентификатор, но получатели вашего идентификатора смогут затем узнать о вас больше из общедоступных документов, которые связанны с этим URL (FOAF, RSS, Atom, vCard и т.д.)

Любой сайт может использовать OpenID для аутентификации и любой сайт может быть OpenID сервером, и они взаимодействуют друг с другом, не заставляя никого проходить дополнительную регистрацию или читать “вступительные слова”. Владелец URL может выбирать какой OpenID сервер использовать.

Ничего в протоколе не требует использования JavaScript или современных браузеров, а схема аутентификации отлично работает в “AJAX” системах, и значит вы можете подтвердить ваш идентификатор не перескакивая со страницы на страницу.

Зачем?

  • Множество остальных распределенных систем идентификации на самом деле таковыми не являются. Частично они все-равно кем-то контролируются.
  • Вводить логин и пароль на дюжине сайтов в день это убого.
  • Сайты, которые заставляют вас вводить ваши имена, пароли, явки, email, а затем показывают их без вашего разрешения это убого.
  • У вас должна быть возможность иметь один (или несколько) идентификаторов, которые будут действительны независимо от того, какие сервисы все еще работают.

Как это работает?

Вот общая картина (если хотите подробно, читайте спецификацию на официальном сайте):

  • Вы ведете блог на каком-нибудь сайте, например LiveJournal (хотя это может быть любой другой), и обычно вы там авторизованы.
  • Вы собираетесь оставить комментарий на someblog.com (может это Movable Type, или Wordpress, или DeadJournal), но у вас нет там аккаунта и значит вы не сможете оставить авторизованный комментарий. Но если их система поддерживает OpenID, то вы увидите что-нибудь вроде этого (надеюсь, что это будет выглядеть получше):
    Login with your blog URL:
    For example: happygirl.bloghost.com
  • Вы набираете “brad.livejournal.com”, нажимаете login, и someblog.com сервер, не покидая страницы и не теряя комментарий, который вы набрали, делает следующее:
    • Он идет на ваш блог и находит там OpenID сервер. Вы можете вообще не знать, что такое OpenID, всю работу сделает программное обеспечение вашего блога.
    • Someblog.com сервер возвращается в ваш браузер и сообщает ему какой OpenID сервер он нашел.
  • Затем ваш браузер связывается с сервером идентификатора и происходит одно из двух…
    1. Если вы никогда раньше не сообщали вашему родному блогу (в данном случае LiveJournal), что вы разрешаете этому someblog.com идентифицировать вас, ваш домашний блог говорит это (не открывая ваших данных) и интерфейс меняется на что-нибудь вроде: (сайту, который хочет подтвердить OpenID оставляется возможность полностью сформировать интерфейс)

      Login with your blog URL:
      Внимание: вы должны быть авторизованы на LiveJournal и/или пометить этот сайт как надежный для аутентификации. Ваш домашний блог, LiveJournal, говорит, что вы можете сделать это здесь [открывает новое окно], после чего вы сможете продолжить.
    2. Если вы уже сказали вашему домашнему блогу, что доверяете этому сайту, то все взаимодействие просходит за сценой и вы, возможно, увидите:
      Hello, Brad! You’re now logged in to someblog.com as Brad from LiveJournal.
  • Вы заканчиваете ваш комментарий, отправляете его и someblog.com проверяет ваш идентификатор, уже вас не беспокоя. Если someblog.com играет по правилам, никто не сможет подделать вашу подпись. Разумеется, любой сайт может лгать, но что прикольного в том, что тысяча человек будет говорить, что они Билл Гейтс и писать от его имени в системах, которые позволяют это? Уважающие себя сайты (где вы, конечно, и обитаете) будут играть по правилам.

Почему не что-нибудь другое?

  • Microsoft Passport — централизованный реестр. Не все доверяют Microsoft контролировать свой идентификатор.
  • TypeKey — централизованный реестр. Не все доверяют SixApart контролировать свой идентификатор (хотя есть шанс, что будущие версии TypeKey будут OpenID серверами).
  • SAML — Мы используем часть этой системы, хотя полная спецификация нам не подходит. Одно из требований OpenID состоит в том, чтобы была AJAX версия, а это означает, что мы сильно ограничены в способах отправки данных от клиента к серверу (JavaScript или фреймы). Также SAML требует для работы SSL — безопасное соединение, что создаёт дополнительные трудности, потому что мы ограничены способами доступа к SAML серверу. Поэтому в случае, когда клиент не может использовать SSL, приходится, по-крайней мере, использовать обертку на JavaScript.
  • LID — Предполагает, что URL-идентификатор связан с динамическим документом, который может обрабатывать причудливые параметры, переданные ему через URL. В реальности это не всегда так, что, на самом деле, является подсказкой для адаптации. Также совмещает слишком много функциональности (аутентификация и обмен пользовательскими данными) в одной спецификации, что в свою очередь повышает число зависимостей для сайта, решившего поддерживать LID (XPath и т.п.). Я уверен, что обмен данными должен быть отдельной компонентой, надстройкой над аутентификацией, не связанной с ней (разработчики LID сейчас работают над тем, чтобы расцепить эти компоненты). Возможно, в будущем мы будем использовать LID как один из рекомендованных нами механизмов для обмена пользовательскими данными, но спецификация в целом была бы слишком тяжелой.

Что насчет доверия?

Система не предназначена для обеспечения доверия. Доверие требует в первую очередь доказательства подлинности.

А как же спам?

И снова, эта система не предназначена для обеспечения доверия. Некто может запустить свой собственный сервер, который будет говорить, что он spamer.example.com/000001 (и так далее до spamer.example.com/999999). Система не ставит себе целью запретить такие вещи. Это задача другого уровня, говорить, что идентификаторы с URL spamer.example.com/* спамеры, или что некоторый ID сервер спамер, или что некоторые идентификаторы спамеры.

Все что мы можем запретить — это использование кем-нибудь кроме спамера этого URL-идентификатора. И хотя кто-то другой может запустить свой сервер, который будет говорить, что он spamer.example.com/0000001/ URL, во-первых, непонятно зачем ему это нужно, во-вторых он не сможет изменить <link rel=…> тег, чтобы тот указывал на его бандитский ID сервер.

О подписывании коментариев

Система не подписывает комментарии. Если некий сайт заявляет, что он поддерживает OpenID, а на самом деле нет, и утверждает, что имеет записи, подписанные вашим идентификатором, это ничего не значит. Система разработана таким образом, чтобы позволить сайтам, заботящимся о запрещении фальшивых подписей и комментариев, самим делать это.

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

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

Кто этим владеет?

OpenID никому не должен принадлежать. Никто не планирует зарабатывать на этом деньги. Я собираюсь выпускать компоненты системы под максимально свободными лицензиями. Таким образом за их использование не нужно будет платить. Система должна приносить пользу всему сообществу, если таковое вообще существует, а мы являемся его частью. Если похожая система уже есть, и я о ней не знаю, скажите мне об этом. Я не планирую изобретать велосипед, просто хочу сделать нечто, что каждый сможет легко использовать. Update: Cпасибо за помощь! Мы нашли по-крайней мере еще двух человек, занимающимися похожими проектами. Один из них сделал систему почти идентичную нашей (mIDm) и имеет похожую цель: сделать нечто, что будет просто работать, независимо от создателей. Таким образом он нам очень поможет.

  • Сразу и проверим :)

  • test

  • Прикольная тележка :) )) Спасибо :) Осталось понять где в liveinternet.ru работать с OpenID:)

  • test

  • Работет?

  • Значит, действительно работает.

  • cool :)

  • hmm

  • Чейк да майкрофон! +))

  • спасибо. получилось

  • Для этого нужно установить мой плагин, посмотрите в следующем посте.

  • не очень понятно как из wordpress сделать свой openid server

  • Надеюсь ты не устал от благодарностей т.к. я тебя хочу еще раз поблагодарить.

    Огромное Спасибо!

  • спасибо!

    первый шаг к пониманию, что это такое – сделан :)
    сейчас просто cms-ку пишу с модулем блогов – дык,
    и до использования OpenID ручки дойдут… :)

  • Работает, просто у меня премодерация комментов стоит, сорри

  • Не фига не работает. Хоть это вроде соблюдено http://www.livejournal.com/support/faqbrowse.bml?faqid=233

  • Ща посмотрим, что это за Сухов.

  • Пробовал SpamKarma, но он не работает с Threaded Comments. Akismet еще не пробовал, все никак не соберусь :)

  • а как же акисмет(тм)?

    ж-)

  • Спасибо, хоть что-то прояснилось! :-)

  • Действительно популярно. Спасибо!

  • Пожалуйста :)
    Коммент сразу не добавлялся потому, что включена премодерация. К сожалению из-за спама пришлось ее включить.

  • Может конечно, только нужно будет все тогда самостоятельно программировать.

  • без этой библиотеки openid может работать?
    она у меня на хостинг не ставится…

  • Спасибо.
    Наконец-то понял что к чему :)

  • test

  • Что могу посоветовать, так это заглянуть на сайт http://www.openidenabled.com/
    Там, во-первых, можно найти хорошую библиотеку, а во-вторых инструменты для тестов, что мне, например, очень помогло.

  • … если не принимать в расчёт возможные программные глюки или злонамеренные действия администрации ЖЖ (или иного openid сервиса) – то да.

  • уважаемые,

    кто из вас прикручивал openid к самописным движкам? поделитесь опытом, пожалуйста!

    icq #125613740.

  • сейчас у себя на сайте внедрять буду %-)

  • Спасибо. Интересно :)

  • Минус, например, такой: нет никакой гарантии того, что сервер, который заявляет поддержку OpenID действительно делает это. А вот почему нельзя просто доверять всем подряд серверам, я сказать не могу :)

  • Сама система возожности привязать ID к имени пользователя не предполагает, в статье упоминается другая система, которую в будущем может быть будут использовать как надстройку над OpenID. То, что на данном блоге ЖЖ идентификатор выглядит как user@livejournal.com, это результат обработки идентификатора блогом, в общем случае, идентификатор – это просто URL (для ЖЖ это http://user.livejournal.com/). Другой сайт может обработать URL по другому и написать что-нибудь вроде Comment by User from LiveJournal.

  • и еще вдогонку. Про плюсы много написано, а какие есть минусы? Почему, например, не желательно давать возможность проверять ваш OpenID всем серверам без разбора?

  • Статья очень полезная, написано немного сумбурно, но ничего, прорвемся.
    Вопрос такой, сам по себе OpenID(как идентификатор) не очень удобен, т.к. выглядит как cactusinside@livejournal, например. Вы упоминали о том, что можно ID связать с какими-то данными, так вот реально ли привязать к ID’у мое полное имя и чтобы оно появлялось в Comment by … ?

  • Спасибо :)

  • Хороший пост, в избранное :)

  • Пожалуйста :)

  • Ага, вкурил, после внимательно изучения и вдумчивого чтения все понял, осталось тока попробовать у себя это прикрутить и заюзать….

    Будем разбираться как оно работает вживую :)

    Спасибо за разъяснения….

  • Угу, понятно, но это значит что мне необходимо будет логиниться и отлогиниваться на моем сайте от тех на которых я работаю или что пишу, или необходимо будет всего лишь отправлять уведомления-подтверждения на сайты требующие авторизации после каждого своего сообщения?

  • Если он залогинился, то OpenID идентификация уже не нужна. Система позволяет залогиниться только на одном сайте, на том же ЖЖ, например. А на других, поддерживающих OpenID, просто подписываться своим URL. Сделать это можешь только ты, т.к. будет проверяться, залогинен ли ты в ЖЖ. Так что гаратии того, что все сообщения будут только от тебя есть.

  • Я не говорю конкретно об этом блоге, это пример был :)
    И потом зачем нужна дополнительная идентификация если человек проходит полную аутентификацию, то есть если он залогинился зачем еще и OpenID?
    Я так понимаю, это простой спсоб подписать свое сообщение, он не гарантирует что все последующие сообщения будут от меня же :(
    Этим могут воспользоваться :(

  • Это недостаток не системы, а конкретно того, что на этом блоге разрешены анонимные комментарии, я их пока не отключил, т.к. прецендентов не было.

  • Может я не верно понял технологию, но тут получается так, что оставив на этом блоге первый свой коментарий с идентификацией по OpenID я, поехав по делам, по приезде смогу обнаружить что от моего имени флейм развели…

    Или как возможно будет отловить я писал иль не я если авторизации нет, а мой урл сможет ввести кто угодно?

    Возможно я не все вкурил, объясните…

  • Почему же, как раз от твоего имени никто не сможет общаться :)

  • Что-то не понятно :(

    Эт значит что от моего имени человек сможет общаться на блоге или форуме?

    У нас в инете и так пакостников хватает :(
    Хотя идея хорошая, но по моему немного не защищенная :(
    было бы неплохо если бы хоть кукис передавался авторизатору, и то было бы получше…

  • Если ты тестировал OpenID, то вводить свой идентификатор надо было в соответсвующее поле.

  • testing reply
    и не свосем понял принципы

  • 5+

  • интересно