[OAuth] 翻译 - 第5章

【转载请注明出处 谢谢】

来自http://www.cnblogs.com/webglcn/archive/2011/09/05/2167621.html

为调用微薄API做准备,现在QQ, 新浪,搜狐,Twitter等微薄所使用的协议。根据我的理解做了一些转译,直译读起来很痛苦。(文化差异 + 个人水平有限)。不对的地方还请大家指正。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------
OAuth Core 1.0 Revision A
[原文] http://oauth.net/core/1.0a/#auth_header


5. 参数

OAuth 协议中的参数名和其对应的值都是大小写敏感的。一次请求中,每个协议参数只能出现一次,并且如果没有其他的方式说明,参数个数不能少。

(译者注释: 就是参数个数是固定不变的,大小写敏感,参数不能重复)

5.1 参数编码

所有的参数名和值都要使用百分编码(percent-encoding)%xx机制,非保留字符都要经过编码, 保留字符一定不能经过编码。(译者注释 在http://tools.ietf.org/html/rfc3986#page-12 可以找到什么是保留字符)。16进制数字在编码后字母都要大写,文本的名字和值在使用percent-coding编码前,必须是经过E=UTF-8编码的。

非保留字 = 字母, 数字, '-', '.', '_', '~'(连字符,小数点,下划线,波浪号)

5.2 调用者请求参数

OAuth 协议参数经以下三种方法之一从调用者发送给服务提供者(优先级从高到低排列)

1. 像下面“OAuth HTTP 授权方案(5.4 OAuth HTTP Authorization Scheme )”,HTTP 授权头部定义的那样传送参数。

2. 每个HTTP Post包含一个 content-type application/x-www-form-urlencoded 的请求体(译者注释:就是http request body部分要有这个东西).

3. 在查询url中包括这些参数。 (译者注释:因为这样传输是明文的在url中,所以优先级最低)


除了这三种方法之外,未来的扩展方法也能传递这个协议的参数,这些方法可以用来传递协议中没有定义的参数,但是一定不能使用上面的第一种方法( OAuth HTTP Authorization Scheme )来传递参数。 (译者注释: 应该是这个授权方案是依据OAuth协议中的必须参数来制定的,其他的人(接收者)不知道用户自定义参数是如何描述的)


5.3 服务提供者返回参数

返回的参数在HTTP消息体中,包括标志(Tokens)和其他信息。这些参数名和值首先被编码(参见5.1), 然后用&连接多个参数 (ASCII 码值 38) 比如

oauth_token=ab3cd9j4ks73hf7g&oauth_token_secret=xyz4992k83j47x0b


5.4 OAuth HTTP授权方案

这一部分在 [RFC2617] 的扩展部分有定义来支持OAuth协议. 使用标准HTTP头部授权(Authorization and WWW-Authenticate header)来传递OAuth协议的参数。推荐的做法是服务提供者接受HTTP授权头部。调用者应该可以发送通过OAuth HTTP授权方案来传递OAuth协议参数.

这个授权方案具体信息参见http://tools.ietf.org/html/rfc2617。auth-schema大小写不敏感。(译者注释:这个链接文档是http授权部分的详细文档,其中auth-scheme 定义了和OAuth HTTP方案相关的信息)


5.4.1 授权头部

OAuth协议参数在OAuth HTTP授权方案中以如下方式发送:

1. 参数编码(见上面的参数编码部分)

2. 每个参数 都是这样的结构 参数名=“参数值”

3. 多个参数逗号分隔, 后面可以选择性的加空白或者空行

4. 根据 [RFC2617] 文档,realm可选参数可以添加和解释 (译者注释: realm这个东东是不进行编码的 看下例)


下面是个例子

                Authorization: OAuth realm="http://sp.example.com/",
                oauth_consumer_key="0685bd9184jfhq22",
                oauth_token="ad180jjd733klru7",
                oauth_signature_method="HMAC-SHA1",
                oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D",
                oauth_timestamp="137131200",
                oauth_nonce="4572616e48616d6d65724c61686176",
                oauth_version="1.0"



posted @ 2011-09-06 18:29  webglcn  阅读(1472)  评论(0编辑  收藏  举报