
- •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
- •Схема процесса
- •На этом рисунке показаны следующие шаги.
- •Ссылки

Jane с её временным токеном возвращают на Beppa

Beppa в фоне обращается к Faji и, если
авторизация прошла успешно, меняет временный токен на токен доступа, и с его помощью извлекает данные

Страница Jane обновляется, на ней отображаются доступные для печати снимки
Криптография
•В протоколе OAuth приняты меры по обеспечению криптографической надёжности, однако авторы рекомендуют передавать каждую конкретную реализацию на анализ экспертам.
•Реальные имена и пароли по сети не передаются.
•Передаваемые данные подписываются либо симметричным ключом (HMAC) либо несимметричным (RSA)
•Для предотвращения атак типа запись-повтор, используется внедрение в подпись даты и/или уникального идентификатора запроса.
Другие проблемы с безопасностью
•Токен и секрет, хранящиеся на сервере, достаточно защищены, однако в случае взлома сервера могут быть использованы злоумышленниками
•Токен и секрет, встроенные в приложение, тиражируются вместе с приложением и ненадёжны по определению
•Сервис может делить выдаваемые токены по уровням доверия и ограничивать доступ к API для ненадёжных клиентов.
Заключение
•Протокол неплохо обкатан и используется в Google и Twitter
•Использование криптографии делает его достаточно устойчивым к взлому
•Есть библиотеки для разных языков, в том числе для perl, php, python
•Если хочется разработать собственное API для удалённого персонифицированного доступа к сервису – стоит вспомнить про OAuth
Основные сведения о маркерах OAuth
•Аутентификация OAuth использует два типа маркеров.
•Маркер запроса гарантирует, что конечный пользователь разрешит вашему приложению выполнять операции API от имени пользователя. YouTube использует маркер запроса также для проверки того, что ваше приложение зарегистрировано в Google.
•Маркер доступа позволяет вашему приложению выполнять операции API данных YouTube от имени определенного пользователя.
•Примечание. Ваше приложение должно получить уникальные маркеры запроса и доступа для каждого пользователя. Кроме того, в вашем приложении должен быть реализован механизм сохранения маркеров доступа для последующего использования.
Этапы процесса аутентификации
•Приложение получает неавторизованный маркер запроса. Google проверяет, что ваше приложение было зарегистрировано, и возвращает маркер. Маркеры запросов действительны в течение только одного часа.
•Приложение перенаправляет пользователя на страницу входа Google. В URL для перенаправления указывается значение неавторизованного маркера запроса, полученное в шаге 1, а также URL для обратного вызова.
После того как пользователь войдет в свой аккаунт YouTube, Google отображает страницу, на которой пользователь может выбрать, разрешить или нет вашему приложению выполнять операции API YouTube от его имени. Если пользователь предоставляет вашему приложению такой доступ, неавторизованный маркер становится авторизованным. (Значение маркера при этом не изменяется.) Пользователь будет перенаправлен на указанный выше URL обратного вызова.
•Приложение обменивает авторизованный маркер запроса на маркер доступа. Обмениваться могут только авторизованные маркеры, и каждый маркер запроса можно обменять только один раз. Маркер доступа связывается с одним аккаунтом пользователя, и ваше приложение должно использовать этот маркер для отправки прошедших аутентификацию запросов API от имени этого пользователя.
Настройка аутентификации OAuth
Шаги, чтобы позволить вашему веб-приложению выполнять аутентификацию пользователей с использованием протокола OAuth.
•Зарегистрируйте свое веб-приложение в Google.
Примечание. Все запросы на получение или использование маркера OAuth должны быть подписаны. Google поддерживает алгоритмы формирования подписи RSA-SHA1 и HMAC-SHA1.
–Если вашим приложением используется алгоритм RSA-SHA1, то при регистрации необходимо добавить в Google сертификат безопасности.
–Если вашим приложением используется алгоритм HMAC-SHA1, при регистрации оставьте поле сертификата незаполненным. Google создаст секретный код пользователя OAuth, который будет показан на странице регистрации вашего домена по завершении процедуры регистрации. Вы будете использовать этот код для подписания запросов.
•Механизм настройки для управления маркерами OAuth.
После того как ваше приложение получит от YouTube маркер доступа OAuth, оно будет использовать этот маркер для запросов API YouTube, выполняемых от имени пользователя, связанного с этим маркером. Поэтому вашему приложению потребуется хранить маркеры и отслеживать пользователей, для которых действителен каждый маркер. Ваше приложение не должно пытаться получить новый маркер доступа каждый раз, когда ему требуется взаимодействовать с YouTube от имени определенного пользователя. В действительности маркеры следует защищать так же тщательно, как и другую важную информацию пользователя, которая сохраняется вашим приложением.
Использование OAuth
Процесс аутентификации OAuth выполняется в три шага.
•Получение маркера запроса
•Авторизация маркера запроса
•Получение маркера доступа
•Шаг 1. Получение маркера запроса
•Для получения маркера запроса отправьте подписанный запрос на https://www.google.com/accounts/OAuthGetRequestToken. Включите в запрос следующие параметры. Обратите внимание на то, что необязательным параметром является только oauth_version; все остальные параметры обязательны.