- •OAuth - безопасный протокол кросс-авторизации веб-сайтов
- •Веб-сервисы - 1 этап
- •Веб-сервисы - 2 этап
- •URL – как способ передачи параметров
- •Веб-сервисы - 3 этап
- •Современная ситуация
- •Чем OAuth отличается от OpenID?
- •Аутентификация
- •Авторизация
- •Проблемы доверия
- •OAuth
- •Терминология-1
- •Терминология-2
- •Терминология
- •Наглядный пример
- •Jane имеет пароль на Faji
- •Jane имеет пароль на Beppa, Beppa имеет токен от Faji
- •Клиент в фоне получает от сервера временный токен
- •Браузер Jane направляют на Faji, добавив в параметры временный токен
- •На основе данных токена Jane информируют, кому и какие права она временно передаёт
- •Jane с её временным токеном возвращают на Beppa
- •Beppa в фоне обращается к Faji и, если
- •Страница Jane обновляется, на ней отображаются доступные для печати снимки
- •Криптография
- •Другие проблемы с безопасностью
- •Заключение
- •Основные сведения о маркерах OAuth
- •Этапы процесса аутентификации
- •Настройка аутентификации OAuth
- •Использование OAuth
- •Параметр
- •Предусмотрены три способа задания этих параметров.
- •В примере запрашивается маркер, необходимый для доступа к аккаунтам Календаря и Picasa пользователя.
- •Об ответе
- •Шаг 2. Авторизация маркера запроса
- •Об ответе
- •Шаг 3. Обмен маркера запроса на маркер доступа
- •Параметр Описание
- •Пример запроса
- •Подписание запросов, использующих аутентификацию OAuth
- •Схема процесса
- •На этом рисунке показаны следующие шаги.
- •Ссылки
Схема процесса
На следующем рисунке показаны шаги аутентификации пользователя по протоколу OAuth. Подобно аутентификации AuthSub и ClientLogin аутентификация OAuth может использоваться или с прямым добавлением, или с добавлением через браузер.
На этом рисунке показаны следующие шаги.
1.Пользователь щелкает ссылку на вашем сайте, чтобы выполнить операцию API, требующую аутентификации. 2.Ваше приложение проверяет наличие сохраненного маркера доступа OAuth для этого пользователя. Если маркер доступа имеется, ваше приложение переходит к шагу 14. Если маркер доступа отсутствует, ваше приложение переходит к шагу 3.
3.Ваше приложение передает подписанный запрос на получение маркера запроса службе аутентификации OAuth Google.
4.Google в ответ на запрос выдает неавторизованный маркер запроса, который приложение извлекает из ответа путем синтаксического анализа.
5.Ваше приложение перенаправляет пользователя к службе аутентификации аккаунтов YouTube. URL перенаправления определяет неавторизованный маркер запроса и URL обратного вызова.
6.Браузер пользователя выполняет переадресацию, посылая запрос службе аутентификации аккаунтов YouTube.
7.Служба аутентификации аккаунтов YouTube отображает страницу Подтверждение доступа, предлагая пользователю войти в свой аккаунт YouTube и разрешить либо запретить вашему приложению выполнять операции API для этого аккаунта.
8.Пользователь выполняет вход и разрешает аккаунту доступ к вашему приложению.
9.Если пользователь разрешает доступ, YouTube снова перенаправляет пользователя на URL обратного вызова, который был включен в URL на шаге 6. Пользователь может запретить аккаунту доступ, и в этом случае YouTube выведет страницу со ссылками для перехода обратно к вашему приложению и на веб-сайт YouTube. 10.Браузер пользователя обрабатывает перенаправление и отправляет запрос на ваш URL обратного вызова. URL перенаправления содержит значение авторизованного маркера запроса. (Значение авторизованного маркера запроса такое же, как у неавторизованного.)
11.Ваше приложение отправляет службе аутентификации OAuth YouTube подписанный запрос обмена маркера запроса на маркер доступа.
12.YouTube в ответ на запрос выдает маркер доступа.
13.Ваше приложение выполняет синтаксический разбор маркера доступа из ответа и сохраняет значение маркера, которое связано с конкретным пользователем. В будущем приложение будет использовать этот маркер доступа при отправке прошедших аутентификацию запросов для того же пользователя.
14.Приложение отправляет запрос API с использованием маркера доступа для аутентификации запроса.
Ссылки
•http://hueniverse.com/oauth/ - популярное изложение протокола (англ.)
•http://dklab.ru/chicken/nablas/57.html - пример применения в PHP (рус.)
•http://rutwit.ru/apps/new - общедоступный интерфейс регистрации приложений на сервере rutwit.ru