欢迎来到天天文库
浏览记录
ID:36964243
大小:340.00 KB
页数:8页
时间:2019-05-04
《oauth协议简介》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、摘要:OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联
2、网很多服务如OpenAPI,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。一、OAUTH产生的背景 典型案例:如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。如下图所示。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名各不相同,密码也各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?法一:用户可能
3、先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比较繁琐,效率低下;法二:用户将在服务A上注册的用户名与密码提供给服务B,服务B使用用户的帐号再去服务A处下载待打印的图片,这种方式效率是提高了,但是安全性大大降低了,服务B可以使用用户的用户名与密码去服务A上查看甚至篡改用户的资源。 很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生。OAuth是由BlaineCook、ChrisMessina、LarryHalff及DavidReco
4、rdon共同发起的,目的在于为API访问授权提供一个开放的标准。OAuth规范的1.0版于2007年12月4日发布。通过官方网址:http://oauth.net可以阅读更多的相关信息。二、OAUTH简介 在官方网站的首页,可以看到下面这段简介: AnopenprotocoltoallowsecureAPIauthorizationinasimpleandstandardmethodfromdesktopandwebapplications. 大概意思是说OAUTH是一种开放的协议,为桌面程序或者基于BS的web
5、应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。OAUTH类似于FlickrAuth、Google'sAuthSub、Yahoo'sBBAuth、FacebookAuth等。OAUTH认证授权具有以下特点:1.简单:不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用;2.安全:没有涉及到用户密钥等信息,更安全更灵活;3.开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH; 三、OAUTH相关术语 在弄清楚OAUTH流程之前,我们先了解下OAUTH的一些术语的定义:·OA
6、UTH相关的三个URL:oRequestTokenURL:获取未授权的RequestToken服务地址;oUserAuthorizationURL:获取用户授权的RequestToken服务地址;oAccessTokenURL:用授权的RequestToken换取AccessToken的服务地址;·OAUTH相关的参数定义:ooauth_consumer_key:使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的oauth_consum
7、er_key。如Yahoo该值的注册地址为:https://developer.yahoo.com/dashboard/ooauth_consumer_secret:oauth_consumer_key对应的密钥。ooauth_signature_method:请求串的签名方法,应用每次向OAUTH三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。ooauth_signature:用上面的签名方法对请求的签名。ooauth_timestamp:发起请求的时
8、间戳,其值是距197000:00:00GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。ooauth_nonce:随机生成的字符串,用于防止请求的重放,防止外界的非法攻击。ooauth_version:OAUTH的版本号,可选,其值必须为1.0。
此文档下载收益归作者所有