2012-04-03 95 views
9

在OAuth規格的部分6.1.1. Consumer Obtains a Request Token說,你必須發送一個包含以下放慢參數的請求:oauth_signature標誌是什麼?

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場? 什麼是他們簽署了

對不起,新來的加密 - 所以假的解釋將不勝感激。

回答

7

正在對「簽名基礎字符串」進行簽名。它抓住了這個特殊要求的「本質」,所以這是不能混淆的。 (請注意,它不包括所有內容,尤其不包括請求主體)。

在該示例中您鏈接到,對於例如基底線往下看:

例如,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 
+2

啊!我明白了,[第9節](http://oauth.net/core/1.0/#signing_process)提供了一個關於如何去做的明確解釋,在9.1.1中說明了'oauth_signature參數必須被排除.' – drozzy 2012-04-03 03:24:27