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"



  • 相关阅读:
    阿里DatatX mysql8往 Elasticsearch 7 插入时间数据 时区引发的问题
    通俗易懂 k8s (3):kubernetes 服务的注册与发现
    ReplicaSet 和 ReplicationController 的区别
    使用Go module导入本地包
    k8s之statefulset控制器
    终于成功部署 Kubernetes HPA 基于 QPS 进行自动伸缩
    Atitit drmmr outline org stat vb u33.docx Atitit drmmr outline org stat v0 taf.docx Atitit drmmr out
    Atitit all diary index va u33 #alldiary.docx Atitit alldiaryindex v1 t717 目录 1. Fix 1 2. Diary deta
    Atitit path query 路径查询语言 数据检索语言 目录 1.1. List map >> spel 1 1.2. Html数据 》》Css选择符 1 1.3. Json 》map》
    Atitit prgrmlan topic--express lan QL query lan表达式语言 目录 1. 通用表达语言(CEL) 1 1.1. 8.2 功能概述 1 1.2. Ongl
  • 原文地址:https://www.cnblogs.com/webglcn/p/2169068.html
Copyright © 2011-2022 走看看