关于API和OAuth授权验证

  2011年5月24日:相关源码下载请见本博其他有关API的文章(点击文章下Tags中的“API”)或者置顶文章。。

  前两天有事去市里了,发现火狐便携版仍然那么杯具。。订阅什么的就没管,积了好多。。博客更新是回来后再补的,订阅的童鞋应该发现的。。

  这几天有折腾腾讯微博的API,(刚蓝屏一次,话说用win7快一年了,蓝屏不到10次,MS还不错),SDK什么的都没有ASP的,而吾辈偏偏就只会一点ASP。。。只好自己试着搞定,经过多方Google,终于明白点oauth是什么了,可是运行时总是失败。。。。。

  两篇和API相关的文章:

  OAuth是什么?:http://www.99ria.com/blog/?p=340

  OAuth认证步骤:http://isouth.org/archives/286.html

  还有就是新浪的API文档吧,腾讯的只是给出了需要的接口地址而已。。

  比较麻烦的是oauth_signature(签名),我的理解就是好比你写了封信,你在信中表明了自己的身份(App Key),然后写了其他需要的内容,但是这封信是不是你写的呢?你需要将已经写好的内容(base string)以及一个Key(App Secret)作为参数,按照指定的签名方法(oauth_signature_method)进行运算,得出一个oauth_signature值(HMAC-SHA1 [Key,base_string])写在信的未尾作为签名;收信人在拿到信后,需要找出信中所述App Key对应的App Secret,然后自己进行下签名运算,看得出的oauth_signature值是不是和你写的一样。

  App Key和App Secret就相当于帐号密码,但是oauth授权验证大部分都是跨站进行或者使用GET方式传递数据,为了安全而采用oauth_signature作为一次性密码。base_string里包含了一个表明当前时间的时间戳(oauth_timestamp,自1970年1月1日00:00:00 GMT以来的秒数)和一个32位的的随机字符串(oauth_nonce),想要逆向算出App Secret…………

  上边说了OAuth授权的安全机制,现在再来看授权过程:

  API通过以下四个步骤来完成认证授权并访问或修改受限资源的流程

  1. 获取未授权的Request Token(temporary credentials)
  2. 请求用户授权Request Token
  3. 使用授权后的Request Token换取Access Token(token credentials)
  4. 使用 Access Token 访问或修改受保护资源

  其中1~3步使用https方式, 第4步使用http方式。

  我们注册并使用腾讯微博,帐号密码及所发布的信息都保存在腾讯微博的服务器上,但是可以通过API接口将数据拿到站外使用,所以第一步,应用方帮用户向腾讯服务器进行“预约”,同时也是对应用方资格的一个验证,二、三步对用户身份进行验证,“办理”将数据拿到站外使用的其他“手续”,最后就可以在应用方“访问或修改受保护资源”。

  和OpenID挺像的,,只是OpenID应用中,对用户身份进行验证的一方只负责验证,不提供资源。

  

  

原文链接:http://www.wdssmq.com/post/ZuoWanDeMengHaiZhenShiXuanYiJiaKeHuanTuCaoChuMei.html

分享本文:新浪微博腾讯微博

神来一句:

  • [贱人就是矫情]
  • [人艰不拆]
  • [朕知道了]
  • [不明觉厉]
  • [这真是极好的]
  • [也真是醉了]
  • [点个赞]
  • [你那么萌你家人造吗?]
  • [涨姿势!]
赞助一下
分享