Зачем именно вам нужен OAuth

Вначале были веб-сервисы. Они были многочисленны и непохожи друг на друга. Со временем некоторые исчезли, некоторые укрупнились, и что интересно — расселись по нишам. Есть социальные сети, фотохостинги, сервисы коротких сообщений и длинных текстов. А совсем недавно всё стало ещё интересней — сервисы стали становиться платформами. Теперь люди пользуются сервисами через другие сайты (фотохостинг сообщает о загруженной картинке в Твиттер), через настольные и мобильные программы (IM-клиент обновляет статус в Фейсбук).

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

Обязанности авторизации — быть безопасной и удобной. Если каждая программа или сервис просят у вас логин и пароль от Яндекса — это небезопасно, потому что с такими «ключами от всех дверей» они могут делать всё что угодно, например фото-программа может внезапно удалить вашу почту. Да и сам процесс ввода логина и пароля удобным не назовёшь, в особенности на мобильном телефоне.

Чтобы справиться с этими проблемами и был придуман единый стандартный протокол авторизации программ на сервисах — OAuth. С ним процесс авторизации, например, фото-программы на мобильном телефоне выглядит примерно так:

  1. Вы нажимаете кнопку «Авторизоваться»
  2. Открывается браузер на странице Яндекса
  3. На странице появляется надпись: «Программа просит разрешения загружать фотографии в ваши Яндекс.Фотки»
  4. Вы нажимате кнопку «Разрешить»
  5. Браузер закрывается, и вы попадаете в авторизованную программу.

В идеале вы вообще не вводите своего пароля. В большинстве же случаев, если вы не авторизованы на самом Яндексе, вы вводите пароль именно на нём, а не где-то ещё. А программа получает только те права, которые запросила.

Если вы заподозрите, что программа или сайт делают что-то, чего вам не хочется, или ваш аккаунт на этом сайте взломали, вы можете аннулировать доступ, зайдя на oauth.yandex.ru.

OAuth-сервер работает в Яндексе уже некоторое время, и сейчас доступен для разработки на платформах Я.ру и Яндекс.Фоток. Ими, конечно, дело не ограничится, и мы со временем планируем внедрить поддержку этого протокола и на других наших сервисах. Почему именно OAuth? Потому что мы любим открытые стандарты и не хотим заставлять разработчиков делать отдельно «авторизацию для Яндекса», которая была бы не похожа ни на что другое. Кроме того, сам протокол довольно хорошо продуман.

В качестве резюме: требуйте свежий OAuth от разработчиков программ для Яндекса и старайтесь не писать свои пароли куда попало!

Иван Сагалаев, Иван Челюбеев и Григорий Бакунов, любители открытых протоколов

21 комментарий
Спасибо большое!!! Возьму на заметку! Сервис хороший..А главное я уже доверяю ему!
Убедительно пишете!
интересно кто первый был, твиттер или вы?
Иван Сагалаев
26 ноября 2015, 17:36
Однозначно не ответишь. OAuth на Твиттер есть очень давно, но это OAuth 1.0. Сейчас разрабатывается OAuth 2.0, и у нас реализован именно он. Ещё OAuth 2.0 есть у Facebook и GitHub, но эти реализации тоже сравнивать нельзя, потому что сама спецификация ещё не окончательная, и мы все, возможно, реализуем разные её ревизии. Про нас могу сказать, что сейчас у нас реализована самая последняя.
Антон Мосягин
26 ноября 2015, 17:36
"сервисы стали становит_Ь_ся платформами" - пропущен мягкий знак.


Извините, пожалуйста )


А за OAuth2.0 - огромное спасибо, Яндекс на белом коне впереди планеты всей )
Иван Сагалаев
26 ноября 2015, 17:36
Слово без мягкого знака вылезло в сумбурном процессе редакторских правок :-). Спасибо!
Григорий Бакунов
26 ноября 2015, 17:36
fixed, спасибо!
Двух Иванов и Григория с праздником Яндекса-Яшечки! Спасибо за Я.РУ и Яндекс.Фотки.
 Именно благодаря сервису авторизации попала на ваши сервисы легче,чем можно предположить.Обидно только,что раньше не знала,как легко попасть на праздник жизни на Яндекс-Фотках. Спасибо! Отменного здоровья,кучу денег и личного счастья! С уважением!
Александр Субботин
26 ноября 2015, 17:36
А чем Oauth лучше OpenID? :-(
Они про разное, и друг друга не заменяют и не мешают.
Комментарий удалён
Иван Сагалаев
26 ноября 2015, 17:36
Готовой -- в каком виде? Программа, плагин к программе, библиотека? Если библиотека -- то на каком языке?

На самом деле, на любой из этих вопросов ответ "пока нет", потому что мы срелизили фичу *вчера* :-). Но штука в том, что если вы хотите что-то готовое, стоит уточнить, что именно.
Ваш Бобук везде бобук поспел.
Программныеманиаки - он понятно, и в Яндексе Программныеманиаки.
А третий кто (кроме слушателя хорошей музыки)?
Иван Сагалаев
26 ноября 2015, 17:36
Иван Челюбеев -- архитектор и идейный вдохновитель API Фоток. Фактически, это мы с Бобуком тут лишние :-)

Благодаря отличной библиотеке для работы с OAuth под .NET (DotNetOpenAuth) за пару часов обновил давно и удовлетворительно работающие сервисы Яндекс.Фотки для Picasa и Яндекс.Фотки Архив.


P.S. Обновлял наспех - могут быть баги!


Иванов Юрий
26 ноября 2015, 17:36
Немного не ясно, а OpenID-то чем не угодил?
Иван Сагалаев
26 ноября 2015, 17:36
Как тут уже выше отвечали, это совсем разные технологии для разных вещей.
В яндексе не хватает JSON, с ним удобнее работать. А за OAUTH 2.0 респект - он сейчас вообще мало у кого есть
Иван Сагалаев
26 ноября 2015, 17:36
Почитайте остальные обновления в фоточном API. JSON там -- одно из самых заметных. http://clubs.ya.ru/api-fotki/replies.xml?item_no=145
есть регистрация приложений для api? что бы получить id secret hash...
Есть -- https://oauth.yandex.ru/client/new

Про процедуры авторизации через oauth.yandex.ru можно почитать в документации API Я.ру.