Делегирование доступа с OAuth

История OAuth началась в ноябре 2006, когда Блейн Кук работал над реализацией OpenID для системы Twitter. Собрав группу единомышленников, он выяснил, что на тот момент не существовало открытого протокола делегирования доступа. В апреле 2007 была создана закрытая группа Google, в которой происходила разработка спецификации OAuth. В июле 2007 группа стала открытой, а 3-го октября 2007 был создан OAuth 1.0.

Делегирование доступа с OAuthДелегирование доступа с OAuth


Нынче дорогие автомобили поставляются с так называемым Valet Key. Это специальный ключ, предназначенный для служащих автостоянок. В отличии от обычного ключа, Valet Key позволяет проехать на автомобиле лишь несколько километров. Также с его помощью невозможно открыть багажник или получить доступ к адресной книге встроенного телефона. Другими словами, с помощью Valet Key вы можете дать кому-то ограниченный доступ к своему автомобилю.

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

OAuth не является расширением OpenID, это самостоятельный протокол. Если бы он являлся расширением OpenID, то требовал бы поддержки OpenID всюду, где требуется поддержка OAuth, что порой бывает нежелательно. Однако ничто не мешает использовать OAuth и OpenID одновременно.

Во время разработки OAuth были проанализированы множество протоколов, например Google AuthSub, OpenAuth AOL, Yahoo BBAuth и другие. Были учтены их слабые и сильные стороны, а сам OAuth разработан таким образом, чтобы упростить переход на него с существующих протоколов. OAuth может быть использован не только в веб-пространстве, но и в desktop-приложениях, мобильных устройствах, игровых приставках и тп.

На данный момент OAuth является полностью завершенным протоколом. На официальном сайте доступна полная спецификация протокола, а также библиотеки для языков программирования C, PHP, Perl, Python и других. Протокол поддерживают Google, Yahoo и Twitter. В ближайшем будущем ожидается поддержка многими другими крупными веб-сервисами.