Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4-1 Електрона комерція / OAuth - безопасный протокол кросс-авторизации веб-сайтов_0.ppt
Скачиваний:
81
Добавлен:
02.02.2021
Размер:
1.25 Mб
Скачать

Параметр

Описание

oauth_consumer

Это значение определяет связанный с приложением домен, который должен

_key

совпадать с доменом, зарегистрированным в Google.

oauth_signature

Это значение указывает алгоритм формирования подписи, использовавшийся для

_method

подписания запроса. Поддерживаемыми значениями для этого параметра

 

являются RSA-SHA1 и HMAC-SHA1.

oauth_signature

Это значение указывает строку (подпись), созданную с использованием

 

вышеозначенного метода подписания. Дополнительные сведения см. в разделе

 

Подписание запросов, использующих аутентификацию OAuth.

oauth_timestam

Это значение указывает время, когда был отправлен запрос. Временная метка

p

должна быть представлена количеством секунд после 1 января 1970 г., 00:00:00

 

GMT.

oauth_nonce

Это значение является случайным 64-разрядным беззнаковым числом,

 

представленным строкой ASCII-символов в десятичном формате. Пара текущее

 

время/временная метка должна всегда быть уникальна для предотвращения

 

взлома путем замещения оригинала.

oauth_version

Это значение указывает версию OAuth, которую должен использовать Google для

 

обработки запроса. Значение по умолчанию – 1.0. Если в запрос включен этот

 

параметр, он должен иметь значение 1.0.

scope

Это значение указывает службу, к которой вы пытаетесь получить доступ для

 

совершения прошедших аутентификацию запросов. Этот параметр используется

 

только для Google и не определен в стандарте OAuth. Установите значение этого

 

параметра равнымhttp://gdata.youtube.com.

Предусмотрены три способа задания этих параметров.

•Включение параметров в

заголовок Authorization запросов GET или POST. Пример запроса, приведенный ниже, показывает, как задать эти значения в заголовке Authorization. Обратите внимание, что

параметр scope не может быть задан в заголовке. Параметр "scope" можно указывать в виде параметра URL запроса или в теле запроса POST.

•Указание параметров в теле запроса POST. Если выбран этот метод, необходимо задать значение заголовка запросаContent-Type равным application/x- www-form-urlencoded.

•Включение параметров в URL запроса GET.

В примере запрашивается маркер, необходимый для доступа к аккаунтам Календаря и Picasa пользователя.

POST /accounts/OAuthGetRequestToken HTTP/1.1 Host: https://www.google.com

Content-Type: application/x-www-form-urlencoded Authorization: OAuth

oauth_consumer_key="example.com", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY

%3D",

oauth_timestamp="137131200",

oauth_nonce="4572616e48616d6d65724c61686176", oauth_version="1.0"

scope=http://gdata.youtube.com

Об ответе

Если запрос выполнен успешно, то Google отвечает сообщением HTTP 200, которое содержит маркер запроса и секретную часть маркера. Приложению необходимо выполнить синтаксический анализ, выделив маркер из ответа. Если не удалось успешно обработать запрос, то Google возвращает сообщение HTTP 400 (Запрос отклонен). Такой ответ может указывать на то, что запрос имеет неверный формат, в нем содержатся неподдерживаемые параметры, отсутствуют необходимые параметры, использован неподдерживаемый метод подписи или имеются какие-то другие ошибки в формате или содержании. Этот ответ может также указывать на то, что у Google есть основания полагать, что запрашивающий – злоумышленник.

В следующем примере показан успешный ответ на запрос маркера.

oauth_token=ab3cd9j4ks73hf7g&oauth_token_secret=ZXhhbXBsZS5jb20

Шаг 2. Авторизация маркера запроса

После получения маркера запроса перенаправьте пользователя на https://www.google.com/accounts/OAuthAuthorizeToken. Добавьте в URL следующие параметры запроса.

Параметр Описание

oauth_token Этот обязательный параметр задает полученный от Google маркер запроса.

oauth_callback Этот необязательный параметр задает URL, на который будет перенаправлен пользователь после того, как приложение получит доступ к своему аккаунту на YouTube. URL может включать параметры запроса. Если не задан URL обратного вызова, то Google выводит страницу подтверждения авторизации маркера пользователя. Обратите внимание, что указание URL обратного вызова дает возможность автоматически перенаправить пользователя к приложению после входа в систему.

Пример запроса В следующем примере показан запрос для авторизации маркера.

https://www.google.com/accounts/OAuthAuthorizeToken? oauth_token=ab3cd9j4ks73hf7g&oauth_callback=http%3A%2F%2Fwww.example.com

Об ответе

Если Google примет этот запрос, то пользователь будет перенаправлен на страницу входа в YouTube. После входа пользователя служба аутентификации отображает страницу, информирующую его о том, что приложению требуется доступ к аккаунту пользователя на YouTube. На странице запрашивается подтверждение пользователя на доступ приложения к его аккаунту.

Если пользователь предоставил приложению доступ, то он перенаправляется на URL обратного вызова, заданный в запросе на авторизацию маркера. Если пользователь запретил доступ, то он будет перенаправлен на страницу, содержащую ссылки на сайт и на YouTube.

Следующий URL показывает формат перенаправления на URL обратного вызова с авторизованным маркером запроса. Авторизованный маркер запроса имеет то же значение, что и неавторизованный маркер, отправленный в запросе. Значением является текстовая строка длиной до 256 байт.

http://www.example.com/ytapi.html?oauth_token=CKF50YzIHxCT85KMAg

Шаг 3. Обмен маркера запроса на маркер доступа

После авторизации маркера запроса пользователя приложение может обменять этот маркер на маркер доступа. Маркер доступа позволяет отправлять удостоверенные запросы к API YouTube от имени конкретного пользователя. Время действия маркеров доступа не ограничено, они работают как маркеры сеанса AuthSub.

Чтобы заменить авторизованный маркер запроса маркером доступа, отправьте подписанный запрос HTTP на https://www.google.com/accounts/OAuthGetAccessToken со следующими параметрами запроса. Обратите внимание, что все эти параметры,

кроме oauth_token, также используются (в том же контексте) в запросах для получения маркера запроса. Единственным необязательным параметром является oauth_version, все остальные обязательны.

Параметр Описание

oauth_consumer Это значение определяет связанный с приложением домен, который _key должен совпадать с доменом, зарегистрированным в Google. Это

значение не должно отличаться от значения, представленного в запросе на получение маркера запроса.

oauth_token Оно определяет авторизованный маркер запроса.

oauth_signature_ Это значение указывает алгоритм формирования подписи, method использовавшийся для подписания запроса. Поддерживаемыми

значениями для этого параметра являются RSA-SHA1 и HMAC-SHA1.

oauth_signature Это значение указывает строку (подпись), созданную с использованием вышеозначенного метода подписания.

oauth_timestamp Это значение указывает время, когда был отправлен запрос. Временная метка должна быть представлена количеством секунд после 1 января 1970 г., 00:00:00 GMT.

oauth_nonce Это значение является случайным 64-разрядным беззнаковым числом, представленным строкой ASCII-символов в десятичном формате. Пара текущее время/временная метка должна всегда быть уникальна для предотвращения взлома путем замещения оригинала.

oauth_version Это значение указывает версию OAuth, которую должен использовать Google для обработки запроса. Значение по умолчанию – 1.0. Если в запрос включен этот параметр, он должен иметь значение 1.0.

Пример запроса

Следующий пример меняет маркер запроса на маркер доступа.

POST /accounts/OAuthGetAccessToken HTTP/1.1 Host: https://www.google.com

Content-Type: application/x-www-form-urlencoded Authorization: OAuth

oauth_consumer_key="example.com", oauth_token="CKF50YzIHxCT85KMAg", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d65724c61686176", oauth_version="1.0«

ОБ ОТВЕТЕ

Если запрос маркера доступа обработан успешно, то Google отвечает сообщением HTTP 200, которое содержит маркер доступа и секретную часть маркера. В следующем примере показан образец ответа, содержащего маркер доступа OAuth.

oauth_token=ab3cd9j4ks73hf7g&oauth_token_secret=ZXhhbXBsZS5jb20

Google может отклонить запрос маркера, если он имеет неверный формат или есть основания полагать, что запрашивающий – злоумышленник. В этом случае возвращается код ответа HTTP 400 ("Запрос отклонен").

Подписание запросов, использующих аутентификацию OAuth

Все запросы на получение или использование маркера OAuth должны быть подписаны. Это требование относится к вызовам для получения маркера запроса и маркера доступа, а также ко всем запросам к API данных YouTube, которые требуют аутентификации, например запросам на добавление видео или его рейтинга.

Следующие шаги описывают процедуру формирования подписи запросов, в которых используется аутентификация OAuth.

Параметр oauth_signature_method служит для указания алгоритма подписи запроса. Google поддерживает алгоритмы формирования подписи RSA-SHA1 и HMAC-SHA1.

Создайте подпись base string, состоящую из трех элементов запроса, разделенных амперсандами (&). Обратите внимание, что все имена параметров, а также их значения должны быть закодированы согласно спецификации OAuth.

Первый элемент определяет метод HTTP-запроса (GET, POST и т. д.).

Второй элемент задает базовый URL для этого запроса, который не должен включать параметры. Например, если URL запроса равен http://gdata.youtube.com/feeds/api/videos? q=football&orderby=published&v=2, то базовый URL будет равен http://gdata.youtube.com/feeds/api/ videos.

Третий элемент содержит нормализованную строку параметра и его значения. Эта строка должна включать все параметры запроса, заданные в URL запроса, а также все параметры OAuth, кроме oauth_signature. Способ нормализации строки определяется спецификацией OAuth.

Создайте oauth_signature с использованием указанного oauth_signature_method.

Если используется алгоритм RSA-SHA1, то сформируйте подпись с помощью закрытого ключа, соответствующего сертификату, который был добавлен на Google во время регистрации. Если используется алгоритм HMAC-SHA1, создайте подпись с использованием значения "consumer secret", сформированного во время регистрации. Это значение отображается

на странице регистрации вашего домена.

В спецификации OAuth приведен пример запроса, который может быть использован для проверки подписи HMAC-SHA1. Пример включает базовую строку подписи и ключ HMAC-SHA1, а также сформированный дайджест (подпись) HMAC-SHA1.

Соседние файлы в папке 4-1 Електрона комерція