1

我有一个以 REST 方式访问第三方远程 API 并需要 oAuth 的项目的规范。该规范包括以下文本:

访问 API 需要使用 OAuth 协议。每个组织共享的秘密/访问密钥组合可防止未经授权的各方访问。因为服务端点标识了组织,所以不希望在封装 REST 请求的 OAuth 标头中传递其他参数。

其中,我不完全理解以下内容:

因为服务端点标识了组织,所以不希望在封装 REST 请求的 OAuth 标头中传递其他参数。

4

1 回答 1

5

oauth_*参数可以在授权标头中传递,也可以作为 URL 参数传递。如果您传递 Authorization 标头中的值,则我认为这句话的意思是oauth_*不要在标头中包含其他值。

OAuth 参数作为标头:

 GET /initiate?foo=bar 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 params in the URL:

 GET /initiate?foo=bar&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 HTTP/1.1
 Host: photos.example.net
于 2012-05-11T05:36:57.637 回答