
У многих дорогих авто в комплекте есть специальный ключ, который вы можете дать парковщику. С этим ключом нельзя проехать больше нескольких километров, нельзя открыть багажник или посмотреть адресную книгу телефона в машине. Это замечательная идея.
Описание с сайта oauth.net
OAuth - стандарт для аутентификации и получения доступа одними сервисами к данным других. Эта идея не нова. Похожие системы существуют у многих крупных и не очень сервисов. Google AuthSub, AOL OpenAuth, BBAuth Yahoo, Facebook Auth. Но пока никто не создавал стандарт, который позволит существенно повысить взаимодействие между сервисами в сети.
4 декабря 2007 года была принята спецификация OAuth 1.0.
OAuth предназначен для предоставления пользователем доступа к своим данным на одном сервисе другому сервису. Если вы хотите дать некой социальной сети доступ к адресной книге вашего почтового сервиса чтобы он мог поискать ваших знакомых, вам не обязательно предоставлять свой логин и пароль для почты этому сервису. Ведь можно предоставить доступ только к адресной книге и ни к чему больше. Именно для таких целей OAuth и создаётся.
Принцип его работы достаточно простой (и он во многом повторяет принцип работы систем API, ссылки на которые даны выше). Если один сервис (клиент) хочет получить доступ к вашим данным на другом сервисе (сервере), поддерживающем OAuth, то он запрашивает у сервера ключ, перенаправляет вас на сервер чтобы вы разрешили доступ к данным (авторизировав полученный ключ) и далее с помощью авторизированного ключа может получить данные, которые он запрашивал, и запрос на которые вы подтвердили.
В принципе, после авторизации клиент может не только запрашивать ваши данные, но и изменять данные на сервере. Т.е. делать всё, что позволит ему пользователь и сервис, предоставляющий API.
Преимущество такого стандарта перед существующими API в том, что сервисам, которые хотят предоставлять свои данные по требованию, будет проще это API писать (т.к. существуют серверные библиотеки на разных языках), а сервисам, которые хотят данные получать, будет проще это сделать благодаря стандартизации процесса.
Стандарт не определяет сам процесс получения данных. Он определяет только процедуру авторизации. Остальное остаётся на усмотрение сервиса, предоставляющего данные. Также на его усмотрение он может потребовать различных механизмов проверки подлинности (подписи). Существуют рекомендованные механизмы (HMAC-SHA1, RSA-SHA1), но можно использовать и другие.
Список сервисов, поддерживающих OAuth, пока невелик. Обновлённую версию можно найти в вики.
Набор библиотек для OAuth внушительнее, чем список использующих его сервисов. Доступны библиотеки на PHP, Ruby, Python, Java, C# и Perl. Ссылки на них можно найти здесь: http://oauth.net/code/
У OAuth, как и OpenID, на мой взгляд, большое будущее. Стандартизация механизма обмена данными между сервисами требовалась уже давно.