Генерация подписи OAuth (PHP) - PullRequest
1 голос
/ 01 февраля 2012

Я не очень хорошо знаком с потоком и / или кодировкой OAuth, но мне удалось (в некоторой степени) заставить мой сайт работать в качестве поставщика OAuth.

Я говорю как-то , потому что в течение долгого времени я получал ошибку «Неверная подпись» при использовании токена доступа для получения защищенной информации (я успешно получил токен запроса, авторизовал его и получил токен доступа).

ИтакЯ немного посмотрел на метод генерации подписи (я использую Drupal 7 и некоторые недокументированные модули).Код:

public function build_signature($request, $consumer, $token) {
  $base_string = $request->get_signature_base_string();
  $request->base_string = $base_string;

  $key_parts = array(
    $consumer->secret,
    ($token) ? $token->secret : "" // the token object has a key and a secret property
  );

  $key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
  $key = implode('&', $key_parts);

  return base64_encode(hash_hmac($this->algo, $base_string, $key, TRUE));
}

Таким образом, используется секрет $token для генерации подписи для запроса (плюс $base_string, что не важно).

Так что яугадаю мой вопрос на самом деле: нужно ли приложению (клиенту), использующему мой OAuth, знать секрет токена доступа, чтобы он работал?Является ли секрет публичной информацией (не догадываюсь, отсюда и название).Что я тут не так делаю?

1 Ответ

1 голос
/ 01 февраля 2012

Да, они делают.

Секрет токена доступа (а также секрета потребителя) используются для подписания базовой строки подписи на стороне клиента в последующих запросах на доступ к защищенным ресурсам, так же, каквыполняется на стороне сервера при проверке подписи.

В спецификациях OAuth 1.0 также указывается, что поставщик OAuth должен возвращать секрет токена доступа при создании токена доступа, см. раздел 6.3.2.из спецификаций .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...