Что такое OpenID

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

Среди наиболее известных — LiveJournal, Google, MySpace, Yahoo! А вот Facebook не является провайдером OpenID. Жаль, ведь в настоящий момент насчитывается примерно миллиард аккаунтов, которые являются частью ОпенАйДи. Соответственно, Facebook мог бы сразу добавить еще 50% к этой цифре.

А вот сайтов, поддерживающих авторизацию по OpenID гораздо больше — википедия называет цифру 9 миллионов таких сайтов.

Что такое openid

Чтобы понять, как это работает, ситуацию нужно рассмотреть со стороны всех трех участников: пользователя, зависимой стороны и провайдера OpenID.

Допустим, вы хотите оставить комментарий в livejournal, но автор поста закрыл эту возможность для анонимных пользователей. Так как livejournal поддерживает аутентификацию по OpenID вам вовсе не обязательно регистрировать себе жежешечку. Достаточно вспомнить, какие учетные записи с использованием OpenID у вас уже есть. Например, яндекс.почта. Вы отмечаете нужный способ авторизации и вводите ссылку вида http://openid.yandex.ru/ваш_логин_в_яндекс/:
После этого linejournal должен удостоверится в том, что у вас действительно есть OpenID. Для этого вас особым образом перенаправляют на сайт вашего провайдера OpenID (хотя, иногда могут встроить проверочную страницу прямо у себя). При этом запрос будет сформирован особым образом, для того, чтобы общение livejounal и yandex не контролировалось пользователем. Пользователь лишь выбирает ответ:
Когда вы кликните кнопку «Подтвердить» Яндекс вернет Живому Журналу ответ, что данный пользователь действительно имеет указанный OpenID.

Немаловажной деталью тут является то, что такое простое подтверждение в две кнопки вы получите только если уже залогинены в Яндекс. То есть имеете активную сессию. В противном случае вам придется сначала авторизоваться, а потом уже подтверждать, что это на самом деле вы.

Кстати, если у вас не просто есть учетка в Яндексе, а еще и создана страница в я.онлайн, то вашим OpenID будет не http://openid.yandex.ru/ваш_логин_в_яндекс, а http://ваш_логин_в_яндекс.ya.ru.

После подтверждения ваш комментарий появится в комментируемом ЖЖ:
Если кликнуть по ссылке, то Яндекс любезно сообщит, что это действительно тот самый пользователь:
OpenID чем-то похож на сертификат — его выдает авторитетный ресурс и этому сертификату доверяют остальные. Иметь такой сертификат весьма удобно — вам не придется регистрироваться снова на очередном популярном ресурсе только для того, чтобы задать один вопрос и навсегда забыть о нем. Очень жаль, что система не стала повсеместно распространена и некоторые сайты полагают, что вот у них-то вы обязательно должны зарегистрироваться.

Иногда бывают и курьезные ситуации. Например: livejournal, являясь провайдером OpenID, позволяет использовать свои сервисы для пользователей того же Яндекса. В то же время, Яндекс, являясь провайдером OpenID, не дает возможность использовать свои сервисы клиентам других провайдеров. То есть комментировать в ЖЖ учеткой Яндекса можно, а комментировать я.ру учеткой ЖЖ — нельзя. Вот такая дискриминация.

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

Для использования возможностей OpenID пользователю нужно будет авторизоваться. То есть, как в приведенном выше примере, указать свои логин и пароль к тому же Яндексу (или другому провайдеру OpenID). То есть банальный фишинг. Атакуемый вводит учетные данные на подставной странице и они отправляются в базу злоумышленника.

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

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

Возвращаясь к некоторой разобщенности по вопросу провайдерства OpenID хочется отметить, что прогресс в этой области несколько тормозится крупными ресурсами, которые прикладывают все усилия, чтобы заменить собой данную систему. К ним можно отнести уже упомянутый Facebook, Twitter. Можно добавить и отечественную социальную сеть «ВКонтакте».

Поэтому вместо упрощения и консолидации мы получаем разобщение интернета — учитывая особенности аудитории многие сайты предпочитают делать аутентификацию не по OpenID, а с помощью API другого популярного сервиса. Это объясняется тем, что частенько целевая аудитория сайта больше совпадает с аудиторией вконтакта, чем с теми, у кого есть живой журнал. Соответственно, логичнее «прикрутить» только кроссавторизацию от вконтакта, а без OpenID обойтись.

Есть и другое объяснение — кроме самих пользователей социальным сетям нужен и контент, сгенерированный этими пользователями. Для этого придумали придумали другую технологию — OAuth. С помощью неё можно не только авторизоваться, но и использовать доступный контент.

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