Комментарии 34
Не вчитывался, тк знаком с OpenID.
Но статья хорошая, спасибо!
Но статья хорошая, спасибо!
Действительно, протокол «весьма сложен» :)
Класс! Как раз скоро понадобится иметь дело с OAuth, большое спасибо за статью, ушло в избранное.
P.S.: уберите под кат чуть больше, мобильные хабраюзеры будут Вам очень признательны. Можно сразу же после «В этой статье я попытаюсь объяснить основы OAuth человеческим языком» :)
P.S.: уберите под кат чуть больше, мобильные хабраюзеры будут Вам очень признательны. Можно сразу же после «В этой статье я попытаюсь объяснить основы OAuth человеческим языком» :)
Начал читать и понял что такие статьи нужно розбивать по типу «Часть 1» и «Часть 2», тяжело однако в конце рабочего дня столько осилить столько полезной информации.
Ну, в hueniverse.com/oauth/ как раз разбито на 4 части. Рекомендую, кстати, эту статью тоже прочитать тем, кто собирается более детально работать с OAuth. Правда, она на английском и несколько другой «заточенности», чем моя.
НЛО прилетело и опубликовало эту надпись здесь
Великолепно! Замечательная статья! Хабр еще тот ) Спасибо!
спасибо, хотя у меня когда пробовал oAuth с сервисами гугла хранически не получался Access Token, ошибка хеша что убей, причем если не изменяет память этот-же алгоритм на предыдущем шаге работал… не сталкивались?
Хорошая статья, всё понятно и доступно. Попробую внедрить oAuth в одном из следующих проектов на Grails. Тем более, насколько мне известно, для Grails есть соответствующий плагин.
О-я-, хорошая штука )
Я так понимаю oAuth похожий чемто на SAML, но немного проще. Поправте если не прав.
Шикарно! Появление русскоязычной статьи мне как раз в тему. Спасибо автору и dk за то что вы есть!
Вот еще есть пример довольно лаконичного использования OAuth-модуля, поставляемого в виде binary extension для PHP:
docs.php.net/manual/ru/oauth.examples.fireeagle.php
Там этот же конечный автомат развернут в 2 if-а. Правда, про E_NOTICE они в нем забыли. :-)
docs.php.net/manual/ru/oauth.examples.fireeagle.php
Там этот же конечный автомат развернут в 2 if-а. Правда, про E_NOTICE они в нем забыли. :-)
Остался нераскрытым один вопрос: если OAuth ни в коем случае не альтернатива OpenID, а лишь средство запросить некую служебную информацию с другого веб-сервиса, то почему же на многих сайтах используют OAuth авторизацию как полноценную замену OpenID? Кстати, на вашем форуме я наткнулся на тред с подобным вопросом: xpoint.ru/forums/programming/PHP/thread/44649.xhtml
Предлагаю написать об этом еще одну статью ;)
Предлагаю написать об этом еще одну статью ;)
Спасибо за разъяснение сути ЭЦП. Честно сказать, раньше думал что это нечто страшное, сертифицируемое ФАПСИ, проприетарное и обязательно труднодоступное. Теперь смогу разрулить пару нерешенных ранее проблем.
вот уж действительно всё по полочкам разжёвано :)
(кстати, не поленился приложить к экрану лист (обычной плотности для принтеров), через него просвечивает.)
ну и вопрос из зала, немного оффтопик:
не пробовали ли реализовать oAuth-consumer на appspot?
с openid там известны проблемы из-за редиректов.
Алсо,
не совсем понятно, почему для токенов используется file_get_contents, а для api — curl.
(кстати, не поленился приложить к экрану лист (обычной плотности для принтеров), через него просвечивает.)
ну и вопрос из зала, немного оффтопик:
не пробовали ли реализовать oAuth-consumer на appspot?
с openid там известны проблемы из-за редиректов.
Алсо,
не совсем понятно, почему для токенов используется file_get_contents, а для api — curl.
Исключительно из соображений краткости примера и экономии в нем строчек, дабы статья не разрасталась так сильно (в реальной жизни, конечно, лучше все через curl делать). Через file_get_contents() в одну PHP-строчку выполняются GET-запросы. А вот POST-запросы коротко не выполнить, приходится делать через curl.
Разрабатывал авторизацию по OAuth для твиттера с помощью Python/Django (patched) на GAE — никаких проблем не было, urllib2 прекрасно переходит по редиректам.
OpenID — протокол для ускоренной регистрации.
Неправда, OpenID служит для идентификации и ничего более. Он обеспечивает ровно две с половиной функции:
1) уникальность ника в пределах Интернета;
2) принадлежность ника строго определённому лицу (maskas.ru, кстати, нарушает этот принцип);
2.5) надстройка Yadis, возможности которого частично пересекаются с OAuth.
И именно из-за п. 2.5 OpenID многими сервисами применяется не по назначению, а для ускоренной регистрации.
Пример: На Блогспоте можно оставить комментарий и подписаться Open-идентификатором. В ЖЖ при попытке сделать то же самое почему-то создаётся ещё и специальная урезанная учётная запись. Третьи (вроде ThrowCatch.me) вовсе игнорируют идентификацию и используют только персональные данные для автоматического заполнения анкеты при создании обычной локальной учётной записи.
Хотя это всё оффтопик, конечно… Просто пожаловался на жизнь…
Только что перепроверил, да, у ЖЖ, пожалуй, самый правильный подход. Внутренняя учётная запись должна создаваться, тихо и незаметно. Как-то ведь нужно учитывать действия пользователя в системе. Просто когда-то вместо OpenID присваивался странный внутренний идентификатор вида ext_26215461, а нынче красивенько всё сделали, идентификатор светится и значок , как положено.
> Внутренняя учётная запись должна создаваться, тихо и незаметно
Вот именно поэтому я и назвал OpenID «протоколом ускоренной регистрации». Нужно смотреть изнутри. Учетная запись по любому создается на стороннем сервисе, потому что ведь надо к чему-то привязывать ресурсы, создаваемые пользователем. Заметно это для человека или незаметно — уже другой вопрос, зависящий от сервиса (чаще всего — заметно).
Вот именно поэтому я и назвал OpenID «протоколом ускоренной регистрации». Нужно смотреть изнутри. Учетная запись по любому создается на стороннем сервисе, потому что ведь надо к чему-то привязывать ресурсы, создаваемые пользователем. Заметно это для человека или незаметно — уже другой вопрос, зависящий от сервиса (чаще всего — заметно).
3. Redirect to Authorization (через редирект в браузере).А без браузера можно как-то этот пункт выполнить?
А то из приложения вызывать браузер очень не хотелось бы…
Дмитрий,
какие из социальных сервисов рунета поддерживают OAuth?
где его можно применить в рунете?
какие из социальных сервисов рунета поддерживают OAuth?
где его можно применить в рунете?
Отличная статья, обязательно будем использовать oAuth на своих сервисах.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
OAuth: описание протокола простым и понятным языком