OAuth学习

来源:互联网 发布:济南软件行业协会 编辑:程序博客网 时间:2024/05/13 16:28
一、OAUTH相关的三个URL:
  Request Token URL: 获取未授权的Request Token服务地址;
  User Authorization URL: 获取用户授权的Request Token服务地址;

  Access Token URL: 用授权的Request Token换取Access Token的服务地址;

二、获取未授权的request token

  请求参数:

  OAUTH_consumer_key:消费方键值。
  OAUTH_signature_method:消费方签署本请求所用的签名方法。
  OAUTH_signature:签名,定义于签署请求 (签署请求)。
  OAUTH_timestamp:定义于Nonce and Timestamp (单次值与时间戳)。
  OAUTH_nonce:定义于Nonce and Timestamp (单次值与时间戳)。
  OAUTH_version:可选。
  额外参数:由服务提供方定义的任意额外参数
  服务方返回结果,响应包含如下参数:
  OAUTH_token:请求令牌
  OAUTH_token_secret:令牌密钥
  附加参数:由服务提供方定义的任意参数

三、 获取用户授权的request token

  请求参数:
  OAUTH_token:可选。在前述步骤中获得的请求令牌。服务提供方可以声明此参数为必须,也可以允许不包含在授权URL中并提示用户手工输入。
  OAUTH_callback:可选。消费方可以指定一个URL,当 获取用户授权 (获取用户授权)成功后,服务提供方将重定向用户到这个URL。
  附加参数:由服务提供方定义的任意参数。
  服务提供方将用户引导回消费方
  如果消费方在OAUTH_callback中提供了回调URL(在消费方引导用户至服务提供方 (消费方引导用户至服务提供方)中描述),则服务提供方构造一个HTTP GET请求URL,重定向用户浏览器到该URL,并包含如下参数:
  OAUTH_token:被用户授权或否决的请求令牌
  回调URL可以包含消费方提供的查询参数,服务提供方必须保持已有查询不变并追加OAUTH_token参数。

四、用授权的request token换取Access Token

  消费方请求访问令牌参数:
  OAUTH_consumer_key:消费方键值。
  OAUTH_token:之前获取的请求令牌。
  OAUTH_signature_method:消费方使用的签署方法。
  OAUTH_signature:签署请求 (签署请求)中定义的签名。
  OAUTH_timestamp:在单次值与时间戳 (单次值与时间戳)中定义。
  OAUTH_nonce:在单次值与时间戳 (单次值与时间戳)中定义。
  OAUTH_version:版本号,可选。
  返回参数:
  OAUTH_token:访问令牌。
  OAUTH_token_secret:令牌密钥。
五、访问受保护资源
  请求参数:
  OAUTH_consumer_key:消费方键值。
  OAUTH_token:访问令牌。
  OAUTH_signature_method:消费方使用的签署方法。
  OAUTH_signature:签署请求 (签署请求)中定义的签名。
  OAUTH_timestamp:定义于单次值与时间戳 (单次值与时间戳).
  OAUTH_nonce:定义于单次值与时间戳 (单次值与时间戳).
  OAUTH_version:版本号,可选。
  附加参数:服务提供方指定的附加参数。

六、

OAUTH认证授权流程

  在弄清楚了OAUTH的术语后,我们可以对OAUTH认证授权的流程进行初步认识。其实,简单的来说,
  OAUTH认证授权就三个步骤,三句话可以概括:
  1. 获取未授权的Request Token
  2. 获取用户授权的Request Token
  3. 用授权的Request Token换取Access Token
  当应用拿到Access Token后,就可以有权访问用户授权的资源了。大家可能看出来了,这三个步骤不就是对应OAUTH的三个URL服务地址嘛。一点没错,上面的三个步骤中,每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到Access Token。
  具体每步执行信息如下:
  A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求,请求需要带上的参数见上图。
  B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。
  C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。
  D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。
  E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见上图,这个比第一步A多了一个参数就是Request Token。
  F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。
  G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。

原创粉丝点击