Oauth1.0的心得

 


总结Oauth步骤:

1、 用Consumer key & secret 申请request token

2、 Service Provider 根据consumer key & secret 生成 url

3、 Consumer将用户重定向到获得的url网页上

4、 用户授权给consumer权限

5、 Service Provider 将授权的request token 信息以url的方式发送给consumer(需在第一步中指定一个callback)

6、 Consumer用授权的request token换取access token

7、 Consumer可以为所欲为了XD

更详细的步骤:

首先所有Oauth签名的密钥都是consumer_secret+&+token_secret,当token还没有获得时(在申请request_token时)请求参数不带token,secret为consumer_secret+&,当request_token获得后,再换取access token时,请求参数必须带token(否则服务器认证将会被拒绝),secret为consumer_secret+&+token_secret。

其次,再说下请求签名生成的步骤:

       1、收集所有请求参数:Oauth_param+additional_param

       2、生成Base String

       3、以Base String为明文,consumer_secret为密钥生成签名

       4、将签名附到请求参数最后

最后认证流程:   

1、 以consumer_key为主要请求参数(其他的一些参数或根据当前时间生成或固定),向request_token_url发起Http连接。

2、 连接后服务器发回响应,主要参数为oauth_token,oauth_secret。

3、 连接一个url: authorize_token/token=oauth_token。其中oauth_token为服务器发回的响应。将用户重定向到该url进行认证授权

4、 用户认证授权后,服务器将重定向到request token请求时的参数call_url,此时该返回的url将包含oauth_token(还是request_token时的那个token,值没变),oauth_verifier。

5、 以consumer_key,oauth_verifier,oauth_token为主要请求参数,向access_token_url发起Http连接。

6、 收到请求后,服务器返回响应,其中包含oauth_token,oauth_secret(这里的token就是access_token了)

7、 完

Signpost Spec:

       OAuthConsumer,OAuthProvider两个实现Oauth流程的关键类。

OAuthConsumer保存着Consumer key & secret (输入参数)、token & token secret(根据当前的Oauth的流程走到哪一步,分别表示request token 和 access secret)

       OAuthProvider主要的两个方法是retrieve request token &retrieve access token

 

Oauth1.0aConsumer端实现要点:

1、 Oauth要求每次请求都需要签名。以App Secret为密钥,Base String 为明文进行签名。Base String 的组成规则 Method + & + base_url +& + query_param,其中:

Method: Http 请求方法

Base_url:目标url

query_param:请求参数,

包括:    OAUTH_CONSUMER_KEY

              OAUTH_SIGNATURE_METHOD

              OAUTH_TIMESTAMP

              OAUTH_NONCE

              OAUTH_VERSION

OAUTH_TOKEN(如果有的话,一般在申请request token之后生效)

将生成后的签名加到请求参数的后面,发送请求给服务器。(这里根据服务器的要求可能会多点或少点请求参数,一般不太会少,但是服务器可以指定将请求参数放在Http头或者Post中)

2、 在以上Oauth参数中,只有consumerkey 和 consumersecret为需要指定的,其他都是写死的或者是自动生成的。Signature method、Verson是固定的,timestamp和nonce是根据当前时间生成的两串数字。Secret作为签名密钥,不在请求参数中

3、 Oauth基于Http协议实现,所以发送Oauth请求,也就是发送一个Http请求,只是根据服务器的要求,将请求参数放在Http头或者Post中(一般都在Http头,某些蛋疼的会放在post)中。Oauth头域应该和下列字符串相似:

OAuth oauth_consumer_key=XXX,oauth_signature_method=HMAC..,oauth_signature=XXX


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值