Что же такое OpenID на самом деле?


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

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

OpenID позволяет людям получить уникальный идентификатор, который (если это требуется и если никто ничего не взломает) не может быть использован никем кроме его владельца. Сайтам OpenID предоставляет надёжный способ отличать один идентификатор от другого (ни Cookie, ни IP адрес такой возможности не предоставляют).

Также OpenID позволяет передавать и получать пользовательские данные, что также удобно как пользователю так и сайту.

На этом его возможности, в общем то, заканчиваются.

А теперь немного о заблуждениях, связанных с OpenID:

Почему-то распространено мнение, что пользователю, залогинившемуся по OpenID стоит доверять больше, чем пользователю, просто заполнившему форму “Имя, Емейл, Текст комментария”. Это не так. И это явным образом указывается в спецификации (SRE и AX).

OpenID не отменяет ни одну проверку пользователя, которую он проходит при обычной регистрации. OpenID со стороны сайта – это, грубо говоря, просто строка, введённая в поле “Ваше имя”, ежели такое поле было бы на сайте. Это пользователю он даёт возможность получить уникальный идентификатор (если хотите, имя), который не смогут использовать другие. Для сайта же ничего подобного OpenID не предоставляет. Это пользователь может получить некоторые гарантии своей уникальности, но не сайт. Со стороны сайта основываясь только на OpenID нельзя быть уверенным ни в том, что один пользователь использует только один идентификатор, ни в том, что один идентификатор используется только одним пользователем.

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

Конечно, можно использовать OpenID для составления белых списков, чёрных списков, уровней доверия и прочего, но в этом плане он ни чем не отличается от e-mail или IP-адреса.

Кратко подводя итог:
OpenID даёт сайту возможность надёжно отличать один идентификатор от другого (т.к. URL уникальны) и стандартным образом получать пользовательские данные
OpenID даёт пользователю возможность получить уникальное имя в сети и передавать сайтам свои данные стандартным образом.

Period.

Метки: ,

 Интересно? Можно читать RSS

Комментарии: 16

  1. ACID Jesus Says:

    А у самого-то тем временем Open ID нету на блоге – айайяй 8-)

  2. daeq Says:

    Как же нету, всё есть :)

  3. ACID Jesus Says:

    Эм, сорри, что-то прохлопал)))

  4. Marc Says:

    OpenID – это очень правильно, но вот как быть с аккаунтами для смешанных веб-приложений? Например, есть веб-аппликация и мобильный клиент к ней.
    Как авторизовать пользователя из мобильного приложения по openid?
    Кто-нибудь задавался этим вопросом?

  5. daeq Says:

    Хотя в спецификации OpenID упоминается HTTP, но использование этого протокола не обязательно. Протокол OpenID – это только передача текстовых сообщений (а точнее пар ключ-значение). Они могут быть переданы как по HTTP так и любым другим способом. Поэтому если OpenID-провайдер и сервис будут поддерживать передачу OpenID-сообщений по любому другому протоколу (XML или просто текст), то аутентификация по OpenID не будет отличаться от той, что в вебе.

  6. Marc Says:

    Грубо говоря задача следующая:

    Пользователь с помощью openid регистрируется/авторизуется в веб-приложении.
    (Выбор openid провайдера полностью предоставлен пользователю)
    По своей природе наше приложение не ограничиваться веб-интерфейсом.
    Существует также stand-alone клиент (мобильный и/или десктопный) для этого приложения.
    Так вот. Как в этом клиенте удостовериться, что данный openid url принадлежит именно этому пользователю? Допустим клиентская часть работает в том числе и как consumer и спрашивает у openid провайдера: «а действительно ли данный URL принадлежит тому кто его сейчас ввел?».
    Т.е. далее провайдер должен запросить пассворд и подтвердить законность введенного openid. Наше приложение честное и прозрачно отправляет пароль провайдеру… Куда? На каком языке/протоколе? В обычном браузере идет перенаправление на сайт провайдера, где пользователь вводит пароль и получает свои ассоциации.
    Вот на этом месте я застрял!

    Спасибо за внимание!

  7. daeq Says:

    Немного не так. “Удостовериться, что OpenID URL принадлежит именно этому пользователю” должна не клиентская часть, а серверная. Клиентская только заявляет, что “Этот OpenID URL принадлежит мне”.

    Если выбор провайдера предоставлен полностью пользователю, то, по всей видимости, придётся пользоваться именно HTTP-протоколом.

    Тогда серверная часть создаёт URL, который отправляет мобильному клиенту. Клиент запрашивает этот URL у OpenID-провайдера (через HTTP), получает необходимые параметры и любым способом отправляет их серверу. Сервер по HTTP соединяется с провайдером и проверяет подлинность параметров (тут есть несколько вариантов, но это уже детали).

    Итого:
    1. Клиент может соединяться с сервером по любому протоколу. Между ними передаются только URL и параметры OpenID.
    2. Клиент должен поддерживать HTTP для запроса к провайдеру и, вероятно, отправки логина/пароля (провайдер может также требовать SSL-соединения).
    3. Сервер должен также поддерживать HTTP для общения с провайдером.

  8. Waiting.for.rep.ly » Blog Archive » Почему нас не устраивает OpenID Says:

    [...] было на днях рассказать, и тут наткнулся на прекрасный пост, где это все уже [...]

  9. http://photo22.net/ Says:

    пытался прикрутить к joomle и комментариям jomComments. Форма появилась – запрос на livejournal есть но вот вопрос – как заменить в комментариях форму на OpenId, а то она пока живет отдельной жизнью. в jomComm есть возможность работы с 3-ими приложениями, я просто не знаю как. Кстати по вашей статье, сделал идентификатором свой домен, спасибо большое за это :)

  10. daeq Says:

    В Joomla совсем не разбираюсь. Поэтому тут ничем помочь не могу…

  11. Сергей Гладилин Says:

    С тем, что OpenID-логину можно доверять не больше, чем пользователю, указавшему “Имя, Емейл, Текст комментария” – не согласен. Согласен, что ему можно доверять не больше, чем пользовтаелю, заполнившему e-mail, на который было затем выслано письмо, получение которого пользователь подтвердил. Согласитесь – подтверждение e-mail’а – это все же шаг.

    Далее, не согласен с тем, что нельзя быть уверенным в том, что один идентификатор используется только одним пользователем. Это зависит от приложения. Для большинства приложений как раз можно считать, что одинаковые OpenID означают одного пользователя – например, банить по OpenID. Это куда более адекватный подход, чем банить по IP – IP пользователя провайдер может завтра без спросу отдать другому пользователю – и тот окажется незаслуженно забаненным, а вот уважающий себя пользователь свой OpenID просто так не отдаст…

  12. Сергей Гладилин Says:

    Кстати, залогиниться по OpenID в этот блог у меня не получилось. Выдает:
    User was created fine, but wp_login() for the new user failed. This is probably a bug.

  13. daeq Says:

    >Согласен, что ему можно доверять не больше, чем пользовтаелю, заполнившему e-mail, на который было затем выслано письмо, получение которого пользователь подтвердил.

    Я могу сделать различными идентификаторами каждую страничку своего блога. И это всё будут разные идентификаторы. Какое тут подтверждение?

    >Далее, не согласен с тем, что нельзя быть уверенным в том, что один идентификатор используется только одним пользователем.
    Зайдите на maskas.ru. Там OpenID-идентификаторами масок может пользоваться любой желающий.

  14. Aleksandrs Says:

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

  15. daeq Says:

    Уже не загнётся.
    Её большая часть интернет-гигантов теперь поддерживает.

  16. kud9i Says:

    Сама технология ещё недоработана но хорошее всёже есть – хорошо что OpenID-идентификаторами масок может пользоваться любой желающий.
    ну и с ip проблем меньше!

Про11те?

Entries (RSS)