【问题标题】:OAuth signature generating (PHP)OAuth 签名生成 (PHP)
【发布时间】:2012-02-01 13:09:45
【问题描述】:

我对 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 的应用程序(客户端)是否需要知道访问令牌密码才能正常工作?秘密是公开信息吗(我猜不是,因此得名)。我在这里做错了什么?

【问题讨论】:

    标签: php oauth drupal-7


    【解决方案1】:

    是的。

    访问令牌秘密(以及消费者秘密)用于在客户端访问受保护资源的后续请求中对签名基本字符串进行签名,与在签名时在服务器端完成的方式相同已验证。

    OAuth 1.0 规范还规定,OAuth 提供者必须在生成访问令牌时返回访问令牌机密,请参阅section 6.3.2 of the specs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-17
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      相关资源
      最近更新 更多