zoukankan      html  css  js  c++  java
  • [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"



  • 相关阅读:
    NET Core-TagHelper实现分页标签
    NET Core-学习笔记(三)
    NET Core-学习笔记(二)
    NET Core-学习笔记(一)
    MVC默认路由实现分页-PagerExtend.dll
    Tomcat优化
    JVM参数配置大全
    tomcat8+memcached session共享
    Tomcat+Nginx+Redis+MySQL实现反向代理、负载均衡、session共享
    搭建Tomcat应用服务器、tomcat虚拟主机及Tomcat多实例部署
  • 原文地址:https://www.cnblogs.com/webglcn/p/2169068.html
Copyright © 2011-2022 走看看