- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
WDPF系统中认证授权流程的设计与实现
2.3 基于OAuth的认证授权
数码相框平台图片社区提供数码相框终端图片上传、同步、存储、欣赏和分享等基本功能,也可以整合第三方应用,比如Flickr,又拍网等图片应用,Google地图,日历等应用,还可以作为独立的应用开放API提供给数码相框平台其他模块或其他网站使用。无论作为第三方应用的提供者还是消费方,用户需要授权第三方应用使用自己的数据或资源,传统的用户名口令授权容易被截获用户名和密码,泄露用户信息,安全性很难得以保证。
OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的账号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OAuth是开放的。业界提供了OAuth的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAuth是简易的。目前,互联网很多服务如Open API,很多公司如Google,Yahoo,Microsoft等都提供了OAuth认证服务,这些都足以说明OAuth标准逐渐成为开放资源授权的标准。OAuth认证流程如图2所示。
图2 图片社区OAuth认证流程
(1)每步执行信息
●消费方(第三方应用)向图片社区(OAuth服务提供商)请求未授权的Request Token。向Request Token URL发起请求,请求需要带上的参数见图2。
●图片社区同意消费方的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给消费方。
●消费方向图片社区请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。
●图片社区将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAuth就不会返回任何信息给消费方。
●Request Token授权后,消费方将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见图2,这个比第一步A多了一个参数就是Request Token。
●图片社区同意消费方的请求,并向其颁发Access Token与对应的密钥,并返回给消费方。
●消费方以后就可以使用上步返回的Access Token访问用户授权的资源。
图片社区通过以下4个步骤来完成认证授权并访问或修改受限资源的流程:
①获取未授权的Request Token。通过访问http://home-g3.com/request_token获取未授权的Request Token,返回值包括未授权的Request Token和对应的Request Token Secret。
②请求用户授权Request Token。获得Request Token之后,需要请求用户授权该Request Token。你需要将浏览器跳转到http://home-g3.com/authorize(如果无法自动跳转,则需要提示用户手工跳转)。这会是一个图片社区上的页面,提示用户授权给你的应用,以允许你的应用访问该用户在图片社区上的信息。跳转后用户会看到请求授权的页面,用户可以选择同意或者拒绝授权。
③使用授权后的Request Token换取Access Token。用户完成授权后,第三方应用可以通过访问http://home-g3.com/access_token,将已授权的Request Token换取Access Token。Access Token将被用于访问或修改受限资源。返回值包括授权的Access Token,对应的Access Token Secret。
④使用Access Token访问或修改受保护资源。获得Access Token之后,第三方应用就可以使用Access Token访问或修改受保护的资源。
3 结束语
根据数码相框业务平台不同模块的特性,采取不同的认证方式并进行一定的加强,保证了不同模块功能的安全以及一定的简易性。用户登录部分采用验证码校验、密码再加密和加强的密码域,HTTP摘要认证采用Diameter协议实现,第三方应用使用图片社区服务基于OAuth协议实现等,不但符合各自性能要求,而且保障各自的安全性。
上一篇:智能控制深港3G过境信号
下一篇:2G/3G互操作之邻区优化