oauth_signature签署“什么”?

时间:2012-04-03 02:57:46

标签: digital-signature

在OAuth规范的6.1.1. Consumer Obtains a Request Token部分中,您必须发送包含以下参数的请求:

oauth_signature:
    The signature as defined in Signing Requests.

但如果oauth_signature本身就是其中的一部分,您如何签署请求?我的意思是,你签了什么?除oauth_signature之外的所有字段还是什么?

例如,在The OAuth 1.0 Protocol中,他们提供了以下获取临时凭证的示例:

POST /initiate HTTP/1.1
Host: photos.example.net
Authorization: OAuth realm="Photos",
    oauth_consumer_key="dpf43f3p2l4k3l03",
    oauth_signature_method="HMAC-SHA1",
    oauth_timestamp="137131200",
    oauth_nonce="wIjqoS",
    oauth_callback="http%3A%2F%2Fprinter.example.com%2Fready",
    oauth_signature="74KNZJeDHnMBp0EMJ9ZHt%2FXKycU%3D"

但他们是如何获得oauth_signature字段的呢? 他们签名 是什么?

对不起,加密的新手 - 如此虚拟的解释将不胜感激。

1 个答案:

答案 0 :(得分:9)

"签名基本字符串"正在签署。它捕捉了"本质"这个特殊的请求,所以不能搞砸。 (请注意,它不包括所有内容,尤其不包括请求正文)。

在您链接到的示例中,请继续阅读示例基本字符串:

  

例如,HTTP请求:

 POST /request?b5=%3D%253D&a3=a&c%40=&a2=r%20b HTTP/1.1
 Host: example.com
 Content-Type: application/x-www-form-urlencoded
 Authorization: OAuth realm="Example",
                oauth_consumer_key="9djdj82h48djs9d2",
                oauth_token="kkk9d7dh3k39sjv7",
                oauth_signature_method="HMAC-SHA1",
                oauth_timestamp="137131201",
                oauth_nonce="7d8f3e4a",
                oauth_signature="bYT5CMsGcbgUdFHObYMEfcx6bsw%3D"
  

由以下签名基本字符串表示(换行符      仅供参考:

 POST&http%3A%2F%2Fexample.com%2Frequest&a2%3Dr%2520b%26a3%3D2%2520q
 %26a3%3Da%26b5%3D%253D%25253D%26c%2540%3D%26c2%3D%26oauth_consumer_
 key%3D9djdj82h48djs9d2%26oauth_nonce%3D7d8f3e4a%26oauth_signature_m
 ethod%3DHMAC-SHA1%26oauth_timestamp%3D137131201%26oauth_token%3Dkkk
 9d7dh3k39sjv7