Как стать автором
Обновить

Комментарии 61

тоже как-то ковырял Simple OpenID PHP Class (class.openid.v3.php), самым сложным было прикрутить авторизацию через google аккаунт. в итоге все заработало, но до реального проекта не добралось.
может поделитесь опытом?
могу поделиться результатом pastebin.com/FXqufdb4
Отлично и об отличной технологии!
Прям захотелось продолжить попытки внедрения, но разъясните пожалуйста, как зарегистрировать пользователя, вернее по каким параметрам его можно идентифицировать?
Если ходит по openID, тогда уникальным является его идентификатор (URL). Если нужно скомбинировать с традиционной авторизацией (логин-пароль), тогда на этапе создания профиля openID еще предлагать придумать уникальный логин. Зайти под таким логином, естественно, не получится, так как пароль рандомный, и нет возможности сменить.
Вот, может быть вы мне объясните. Зачем вообще нужно вводить идентификатор OpenID, если потом тебя всё равно заставляют придумывать идентификатор уже внутри сервиса? Разве это не взаимоисключающие понятия?
*не минусовал, но объясню
Если ресурс, который использует авторизацию по OpenID, является ресурсом, на котором можно общаться, оставлять сообщения и совершать публичные действия — то появляется необходимость как либо визуально идентифицировать пользователя. Конечно можно использовать для этого введенный идентификатор, но пользователь не всегда может желать использовать(или раскрывать) идентификатор OpenID. Причин много, и каждый может придумать их не один десяток — так что это дает пользователю право выбора
Да, согласен. Внутри сайта все-равно нужен какой-то короткий запоминающийся ник.
Заменяя OpenID на свои ники-идентификаторы, мы перестаём использовать его по прямому назначению — идентификации.
авторизация и идентификация не совсем одно и тоже
Вот именно! А OpenID предназначен именно для идентификации!
Ээээ…
"OpenID изначально проектировался, как независимый от провайдера метод аутентификации"
С этой задачей он отлично справляется — пользователю не нужно каждый раз придумывать и запоминать логин/пароль.
задача идентификации пользователя другими пользователями — это уже другая проблема, для решения которой OpenID подходит лишь частично.
Вот оно как! Название протокола вводит в заблуждение.
Это не совсем то. Есть некоторые сайты, которые выбора не оставляют, а заставляют придумывать логин и пароль, вытаскивая из OpenID только ник, почтовый адрес и некоторые другие сведения.
Ну давайте заюзаем в качестве логина либо сам URL (что пахнет идиотизмом хотя я такое видел), либо попробуем выдрать ник с этого сервиса, очень вероятно что он окажется не уникальным, в этом случае добавим рандомных цифр и дадим пользователю возможность потом из профиля поменять если очень захочется. Я у себя так делал. Хуже всего что не все openid провайдеры (Привет жжшечка) возвращают информацию о пользователе. Поэтому бывает приходится из урла что то выдумывать.
Не чую в URL идиотизма. Хотя далеко не все из них красивые, это да.
вы еще логин {login}.ya.ru забыли
не заставляйте юзеров кликать прямо по радио кнопке, сделайте текст с помощью label и чтобы было можно кликать также по картинке.
Хотите дам идею на 100 миллионов? :)

Когда я ввожу Логин и Пароль — автоматически данные отсылаются на Каждый сервер и берется первый валидный! :)
Готов поспорить, что почти у каждого провайдера есть пользователи alex, vasya, kostya и т.д. Какой выбирать? ;-)
Угу, вот удивится то пользователем под моим ником зарегистрировавшийся в ЖЖшечке, что с него хотят войти по опен ид.
Да и я бы удивился, что после того, как я ввёл имя мне предложили авторизоваться на каком-то левом сервисе.
Не совсем. Они предлагают создать новый аккаунт.

Реализация потребителя в ЖЖ мне нравится больше: он тоже создаёт аккаунт, но не задаёт перед этим бессмысленный вопрос.
На всех сервисах, использующих авторизацию через OpenID создается аккаунт.
Ваш комментарий настолько же верен, насколько бесполезен. Я писал о другом.
Судя по рейтингу комментария, никто не понял того, чего ты хотел донести до меня и остальных.
Окей, разверну мысль. Создание аккаунта — почти неизбежность, если сайт хочет отслеживать действия пользователя. На некоторых простых сайтах этого можно избежать.

Stack Overflow же при этом ещё и спрашивает, создавать аккаунт или не создавать? Зачем? Неужели я могу ответить отрицательно? Я ведь уже нажал «log in».
Давай смотреть логически.
Мы заходим в авторизацию (!), пробуем, он видит что мы с этим идентификатором еще не заходили. Заходили бы — авторизовал бы, не заходили — почему бы не предложить сделать там аккаунт.

У меня вот 2 openid, может я зашел не под тем, которым хочу. Или, к примеру, в гугле два аккаунта и я уже в одном авторизовался. На stackoverflow просто на всякий случай показывают от какого идентификатора меня будут регистрировать.

По-моему, это — правильный ход.
Я понял твою позицию, хоть и не разделяю её. Вводя идентификатор, я обычно задумываюсь о том, что и куда я ввожу, поэтому лишние вопросы меня раздражают.
Ну, читать много при этом не нужно, кнопка Confirm большая, спрашивается такое только один раз — чего тут раздражаться-то.
Basecamp (да и остальное от 37signals) тоже неплохо реализовано. IntenseDebate — один из лучших вариантов. Для людей работают.
IntenseDebate ещё хуже — они не используют идентификаторы для идентификации.
Для яндекса и рамблера логин вводить не обязательно (наверное еще для кого-нибудь). Гляньте habrahabr.ru/blogs/webdev/67774/
Для гугла, ливжурнал и вордпресса тоже.
Покажите пожалуйста ссылку на пример авторизации с помощью ливжурнал без ввода ника.
НЛО прилетело и опубликовало эту надпись здесь
Вот для Гугля УРЛ: https://www.google.com/accounts/o8/id
и еще https://www.google.com/profiles/username
?
самое интересное, что это разные openid-аккаунты
Посмотрите сами:
openid.yandex.ru/{логин}
Вы не правы, на Яндексе OpenID выглядет предельно лаконично: http://{логин}.ya.ru/
Так тоже работает.
вы не правы, так как если у пользователя нет http://{логин}.ya.ru/ (так тоже может быть), то яндекс его динамит, поэтому приведенный пример вернее.
Тоже недавно пришлось реализовать первый раз вход по openID в новом проекте. Так-как использовал Zend Framework, то изначально попытался их классы для входа прикрутить. Но, первым в списке приоритетов был гугл, а со второй версией протокола у Зенда проблемы. В итоге использовал хак и всё заработало.

Однако, дальше понадобилось добавить Яндекс, и с ним Зенд тоже отказался работать. Пришлось искать другую библиотеку, остановился на этой, пока работает со всеми требуемыми провайдерами. Рекомендую
Спасибо за ссылку на Dope OpendID. Как раз искал замену Simple OpenID с поддержкой OpenID 2.0
Simple OpenID PHP Class тоже пробовал, но что-то в ней не понравилось, не помню уже, что. Его плюс, что он кажется единственный на phpclasses для работы с openID
Вроде бы он не поддерживает OpenID 2.0
Как вариант: сделать в вышеозначенном примере просто последний пункт «Другой OpenID» с возможностью ввода собственного OpenID адреса.
Черт возьми, хватит уже авторизовывать через username.livejournal.com! У меня юзернейм начинается с двух подчеркиваний, и, насколько понимаю, не воспрнимается ЖЖ в этом формате. Правильно писать так: users.livejournal.com/username.
Идентифицировать (не авторизовывать!), конечно, лучше по users.livejournal.com/username, но username.livejournal.com тоже является правильным OpenID, когда нет подчёркиваний.
при таком подходе не хочет работать (при username.livejournal.com работает) — подскажите в чем проблема?
на запрос users.livejournal.com/username пишет
Сайт, с которого вы только что пришли, вероятно, хочет проверить идентификацию, которую вы не можете предоставить как username.
Есть отличная привычка — привязывать к checkbox и radio соответствующий label. Вот щелкаю я по «mail.ru» в списке и ничего не происходит. Приходится целиться мышкой в маленькую пимпочку слева. Поправьте, пожалуйста.
У вас написано «openID-авторизация». OpenID занимается только идентификацией и не имеет никакого отношения к авторизации, аутентификации и ко многим другим слова на букву «а».
Вы правы по сути — насчет авторизации (разрешать делать что-то — прерогатива приложения), но неправы терминологически — насчет аутентификации: OpenID заведует именно аутентификацией.

Идентификация тут не самый общепринятый термин, первый раз его слышу в таком контексте, кстати.
Прошу прощения, ошибся. Да, OpenID заведует идентификацией и аутентификацией, а авторизация полностью на плечах потребителя.
выбор из списка провайдера немного топорная затея. во первых если назвать поле openid_url то наверняка оно заполнится у юзера из автозаполнения браузера. Далее можно еще по химичить и предложить варианты автозаполнения при помощи js, наверняка уже кто-то и делал.
Скажу больше.
Меня удивляет, что пользователя пытаются всунуть в рамки конкретных openID-провайдеров. Сам я пользую chi.mp, где адрес очень прост. Кроме того существует общепринятое поле для логин по openID, которое выглядит так
stackoverflow.com/users/login
Кстати, в стандарте OpenID из покон века написана форма представления URL — USERID.openid-provider.org
Все провайдеры OpenID должны это поддерживать. Правда, никто не запрещает им поддерживать любые другие URL. Так что возможно имеет смысл у пользователя спрашивать только ник и название сайта, а дальше самостоятельно строить URL для авторизации. Собственно, в стандарте именно так и предписывается делать.
«Если идентификатор представляет собой URL, то первое, что делает зависимая сторона (example.com) — приводит его к нормальному виду, то есть к виду pupkin.openid-provider.org/. В соответствии с OpenID 1.0 зависимая сторона запрашивает веб-страницу по этому адресу и через HTML тег находит URL сервера-провайдера OpenID, например, openid-provider.org/openid-auth.php» Это из русской Вики.
Теперь еще осталось кому-нибудь написать статью о том, как поднять свой собственный OpenID сервер.
Занимаюсь разработкой такого на Си под свою библиотеку https://lowenware.com/webstuff/

>> произвольная openID-авторизация
Это в некотором роде уязвимость при наличии своего OpenID сервера. Потому что можно авторизовывать себя где угодно с поддельными данными.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации