2012-04-03 9 views
9

En la sección 6.1.1. Consumer Obtains a Request Token del OAuth Spec dice que se debe enviar una solicitud que contiene la siguiente parametro:"¿Qué" firma el signo oauth_signature?

oauth_signature: 
    The signature as defined in Signing Requests. 

Pero ¿cómo se puede firmar la solicitud si el oauth_signature sí es parte de ella? Quiero decir, "¿qué" firmas? Todos los campos excepto el oauth_signature o qué?

Por ejemplo, en el The OAuth 1.0 Protocol que proporcionan el siguiente ejemplo de la obtención de las credenciales temporales:

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" 

Pero ¿cómo llegaron al campo oauth_signature? ¿Qué fue que ellos firmaron?

Lo siento, nuevo en crypto - así que la explicación ficticia sería apreciada.

Respuesta

7

Se está firmando la "cadena base de firma". Captura la "esencia" de esta solicitud particular, por lo que no se puede alterar. (Tenga en cuenta que no incluye todo, especialmente no el cuerpo de la solicitud).

En el ejemplo se ha vinculado a, para leer en una cadena de ejemplo de base:

Por ejemplo, la solicitud 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" 

está representado por la siguiente base de la firma string (los saltos de línea son solo para fines de visualización):

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

Aah! Veo, [Sección 9] (http://oauth.net/core/1.0/#signing_process) proporciona una explicación clara de cómo hacerlo, indicando en 9.1.1 que 'El parámetro oauth_signature DEBE ser excluido. – drozzy

Cuestiones relacionadas