贺宗梅
(长沙民政职业技术学院,湖南 长沙 410004)
OAuth授权方式在移动信息平台开发中的应用研究
贺宗梅
(长沙民政职业技术学院,湖南 长沙 410004)
文中在介绍OAuth认证协议的基础上,以基于“豆瓣(douban)”中国社区网站的移动信息平台开发为例,研究了OAuth授权方式,实现了系统的我读、我看、我评的日记、新书、搜素、书评等功能,探索了第三方无需使用用户的用户名与密码就可以申请获得该用户资源授权的开发模式。
OAuth认证协议;移动开发;授权
豆瓣(douban)是一个中国大陆的社区网站。该网站以书影音起家,提供关于书籍、电影、音乐等作品的信息,无论描述还是评论都由用户提供,是中国Web2. 0网站中具有特色的一个网站。豆瓣客户端采用OAuth授权方式。
OAuth协议为用户资源的授权提供了一个安全、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OAuth是开放的。业界提供了OAuth的多种实现,如PHP、JavaScript、Java、Ruby等各种语言开发包,大大节约了程序员的时间,因而OAuth是简易的。目前互联网很多服务如Open API,很多大公司如Google、Yahoo、Microsoft等都提供了OAuth认证服务,这些都足以说明OAuth标准逐渐成为开放资源授权的标准。
(1)Request Token URL:获取未授权的 Request Token;
(2)User Authorization URL:请求用户授权Request Token
(3)Access Token URL:使用授权后的Request Token换取Access Token使用Access Token访问或修改受保护资源
1.2 OAuth相关的参数定义
(1)OAUTH_consumer_key:使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的OAUTH_consumer_key。
(2)OAUTH_consumer_secret:OAUTH_consumer_key对应的密钥。
(3)OAUTH_token:OAUTH进行到最后一步得到的一个“令牌”,通过此“令牌”请求,就可以去拥有资源的网站抓取任意有权限可以被抓取的资源。
(4)OAUTH_token_secret:OAUTH_token对应的私钥。
(5)OAUTH_signature_method:请求串的签名方法,应用每次向OAUTH三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。
(6)OAUTH_signature:用上面的签名方法对请求的签名。
(7)OAUTH_timestamp:发起请求的时间戳,其值是距1970 00:00:00 GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。
(8)OAUTH_nonce:随机生成的字符串,用于防止请求的重复,防止外界的非法攻击。
(9)OAUTH_version:OAUTH的版本号。
1.3 OAuth认证授权流程
OAuth认证授权就三个步骤,三句话可以概括:(1)获取未授权的Request Token;(2)获取用户授权的Request Token;(3)用授权的Request Token换取Access Token。当应用拿到Access Token后,就可以有权访问用户授权的资源了。在三个步骤中,每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到Access Token。
2.1 系统架构设计
系统采用三层架构,通过划分客户与服务器之间的功能,分布式计算提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下,企业逻辑提供了一种把应用中的用户界面从企业逻辑中分离出来的自然方法。在分布式环境下,企业逻辑集中地安装在应用服务器上,这样就降低了客户端的负载,同时对敏感信息的访问也可以得到很好的控制。在分布式计算模式中,由于所有的商业逻辑都驻留在服务器端,信息管理部就可以十分方便地监控服务器的运行情况,很容易地控制访问服务器以及与服务器应用打交道人员的数量。这可以大大简化管理员对系统的管理,减轻系统维护的工作量,并确保系统的可靠运行。软件设计时,考虑到整个系统的延续性和可扩充性,我们将系统应用体系分为三部分:用户表现层、数据访问层、商业逻辑层。(1)用户表现层:处理用户界面的功能;(2)数据访问层:处理数据库的访问与交互;(3)商业逻辑层:处理系统的业务逻辑。
2.2 模块功能设计
本客户端的数据都是通过网络来自于豆瓣的服务器,产生的数据也是上传到豆瓣的服务器,在客户端存储的只有OAuth产生的一些省份识别信息,所以本客户端无需使用数据库。
本豆瓣客户端大致分为登陆页面、我的豆瓣、搜索、新书、评论4大模块,分别负责不同的功能:
(1)登陆模块:访问用户的信息与数据需要经过用户的授权,所以必须有用户授权的模块,本软件才能正常使用。
(2)我的豆瓣:是登陆用户的相关信息,在该模块中又分为很多小模块,例如:我读,显示标记为我读的所有书籍;我看,显示标记为我看过的所有视频;我听,显示标记为我听过的所有音频;我评,显示我所有评论的记录;我的日记,显示我所有的写过的日记,并能新建日记、我的资料,显示登录用户的基本信息。
(3)新书模块:从豆瓣数据库中获取市面上最新出版的书籍并显示。
(4)搜索模块:通过用户输入字段去搜索书籍、音频、视频。
(5)评论:书籍、视频、音频都可以看为一个对象,这个对象有一个共同的特性就是能评论。
3.1 客户端登陆与授权
首先在manifest文件中为首页的Activity下面这行代码:
首先是进入splash页面,然后跳转到MainTabActivity页面,MainTabActivity中的TabHost的控件默认是FavActivity界面,进入这个界面后会通过cookie的检查看是否登录过。因为在登录的时候全部是模拟的HTTP请求,所以我们可以把http respose的cookie通过java文件的操作把cookie存储在本地文件中,这样就解决了反复登录的麻烦。
同样为了不需要反复的认证,我们也把认证的结果存储在SharedPreferences中,这样就避免了每次要从豆瓣服务器中获取数据就要认证的麻烦,认证成功后在sharePreferences中保存信息:
3.2 系统界面
3.2.1 splash页面
图1 splash页面
3.2.2 首页
图2 首页
本系统以“豆瓣(douban)”中国社区网站为基础,开发了其对应的移动信息平台,对我读、我看、我评的日记、新书、搜素、书评等功能做了很好的实现。在权限管理方面,采用OAuth认证协议,探索了第三方无需使用用户的用户名与密码就可以申请获得该用户资源授权的开发模式,具有很好的应用价值。
[1]吴世忠.应用密码学—协议、算法与C源程序[M].北京:机械工程出版社,2000.
[2]Guo Z Z,Li M C,Cui Y R,Fan X X.Dynamic multi-attribute Based encryption[J].JDCTA:International Journal of Digital Content Technology and its Applications,2011.281-289.
[3]王行荣.异构数据同步方法与研究 [J].微电子学与计算机,2006,21(5):175-178.
[4]吴世忠等.构建信息安全保障新体系[M].北京:中国经济出版社,2007.5.
TP311
B
1671-5136(2014)03-0127-03
2014-09-05
湖南省科技计划项目(编号:2014GK3032)、湖南省教育厅科研项目(编号:13C1050)资助。
贺宗梅(1976-),男,湖南攸县人,长沙民政职业技术学院软件学院副教授、系统分析师.研究方向:系统架构,分布式技术。