在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
字段的呢? 他们签名 是什么?
对不起,加密的新手 - 如此虚拟的解释将不胜感激。
答案 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