WDPF(Wireless Digital Picture Frame,无线数码相框平台)系统是一个平台与终端紧密结合的新型业务。安全性是所有可以用来对资源或信息进行保护和验证的机制。认证授权处于业务核心层,用于识别用户身份,允许特定用户访问特定资源或信息,起访问控制作用,保证系统资源和信息的安全。该文介绍了业务平台中不同模块采用不同认证方式,重点介绍基本认证、摘要认证和OAuth认证在业务平台中的设计与实现。
1 引言
无线数码相框平台是一个综合平台,提供对类无线数码相框终端的管理、类无线数码相框终端与平台接入能力支撑、类无线数码相框终端相关业务加载运行能力,其业务模式包含亲情速递和G3传媒等。亲情速递是一种以无线数码相框为载体,实现随时随地照片分享,同时附加天气预报、热点资讯免费增值服务的业务,是进入家庭信息化领域的重要手段。G3传媒则以亲情速递业务为基础,可以实现广告在线发布和终端远程管理,打造一种新型的广告传媒模式。无线数码相框终端是一个具备移动通信模块的数码相框,是通过液晶屏幕向用户显示电子照片的小型电子类消费产品。可放置在各种地方(如家中、办公室、车内等)用作照片的展示。无线数码相框业务系统的结构如图1所示。

图1 无线数码相框业务系统结构
无线数码相框业务系统主要包括接入协议适配层、业务核心层和发送协议适配层。安全性是所有可以用来对资源或信息进行保护和验证的机制。授权管理处在业务核心层,用于识别用户身份,允许特定用户访问特定资源或信息,起访问控制作用,保证系统资源和信息的安全。
无线数码相框平台业务包含以下多种认证授权方式:
(1)用户门户和管理门户采用用户名和密码进行认证。 (2)平台与终端采用HTTP(Hyper Text Transfer Protocol,超文本传输协议)Digest的方式进行认证。 (3)平台与第三方应用采用OAuth的方式进行认证。 (4)平台与短信网关采用CMPP(China Mobile Peer to Peer,中国移动点对点协议)的认证方式。 (5)平台与彩信中心采用MM7(Multimedia Message,多媒体消息即彩信)的认证方式。 (6)平台与BOSS(Business & Operation Support System,业务运营支撑系统)采用BOSS规定的认证方式。
由于文章篇幅限制,本文只介绍前3种认证方式的设计和实现。
2 认证授权流程设计与实现
2.1 基于用户名密码的认证
HTTP基本认证应用在Web Portal,是目前最常见的用户身份认证的方式之一。无线数码相框平台用户门户和管理门户都涉及用户名密码登录,使用HTTP基本认证。用户登录门户时输入正确用户名密码即可进入自己的页面。考虑到机器人登录和密码截取等因素,在一般用户名密码验证的情形下,对以下几点进行了增强:
(1)验证码校验
验证码是一种区分用户是计算机和人的公共全自动程序。可以防止恶意破解密码,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试。
(2)密码再加密
表单提交事件前对输入的密码再加密,防止密码在提交时被截获。移动领域基于密码的认证安全性可以得到保证,只要相应的密钥建立方案合理有效。类似地,密码再加密也可以采用合理有效的密钥建立协议。对于WDPF系统门户的密码再加密使用常见加密算法即可,否则会舍本求末。
(3)限制密码域使用
虽然在密码域中已经将所输入的字符以掩码形式显示了,但是它并没有实现真正保密,因为用户可以通过复制该密码域中的内容,并将复制的密码粘贴到其他文档中查看到密码。为实现密码的真正安全,可将密码域的复制功能屏蔽,同时将密码域的掩码符号也进行改变。实现密码域的内容禁止复制的功能主要是通过控制其Oncopy,Oncut,Onpaste事件实现的。
<input name=“pwd” type=“password” id=“pwd” oncopy=“return false” oncut=“return false”onpaste=“return false”>。
此外,提高基本认证安全性措施还可以绑定用户手机使用一次性随机码,安装密码域安全插件等。
2.2 基于HTTP摘要的认证
为了保证业务终端和服务器之间交互的安全性,业务规范中采用HTTP Digest方式进行终端注册和消息保护。在该过程中,双方需要有特定的密钥对消息头内容进行摘要和对摘要进行认证。通过此方式,终端和服务器对彼此进行身份认证,并保证消息防篡改。HTTP Digest摘要认证请求基于Diameter基本协议实现。
Diameter基本协议为移动IP(Internet Protocol,网际协议),网络接入服务等应用提供最基本的服务(如用户会话、计费等),具有能力协商、差错通知等功能。协议元素由众多命令和AVP(Attribute-Value Pair,属性值对)构成,可以在客户机、代理、服务器之间传递鉴别,授权和计费信息。但是不管客户机、代理还是服务器,都可以主动发出会话请求,对方给予应答,所以也叫对等实体之间的协议。命令代码,AVP值和种类都可以按应用需要和规则进行扩展。
通过使用HTTP Digest方式进行鉴权,完成客户端和服务器间的双向认证,系统默认使用MD5摘要算法。
2.2.1 摘要计算算法
(1)客户端请求服务器的请求消息摘要计算算法如下:
response=MD5(MD5(A1)“:”unq(nonce-value)“:”nc-value“:”unq(cnonce-value)“:”unq(qop-value)“:”MD5(A2))。 A1=unq(username-value)“:”unq(realm-value)“:”passwd。 Qop=auth或无值时,A2=Method“:”digest-uri-value。 Qop=auth-int时,A2=Method“:”digest-uri-value“:”MD5(entity-body)。
(2)服务器返回客户端的响应消息摘要计算算法如下:
respauth=MD5(MD5(A1)“:”unq(nonce-value)“:”nc-value“:”unq(cnonce-value)“:”unq(qop-value) “:”MD5(A2))。 A1=unq(username-value)“:”unq(realm-value)“:”passwd。 Qop=auth或无值时,A2=“:”digest-uri-value。 Qop=auth-int时,A2=“:”digest-uri-value“:”MD5(entity-body)。
其中,Method=GET;unq(X)代表去掉X前后的引号;Entity-body代表HTTP请求的消息体;Passwd代表客户端和服务器间共享的私钥。
2.2.2 摘要认证流程
当终端需要与WDPF进行业务交互时,可通过Digest Verify接口从WDPF获得终端摘要认证消息的验证结果。
(1)终端组装Digest_Verify.REQ消息给WDPF。
(2)WDPF执行摘要认证消息的计算和摘要认证结果的对比,WDPF将执行结果Result Code AVP封装在Digest_Verify.RES消息返回给终端。
实现HTTP Digest请求使用以下3组Diameter命令(见表1)。
表1 摘要认证Diameter消息

●CER/CEA:在传送连接建立时,两个Diameter节点进行交换的第一个Diameter消息为CER/CEA。该消息包括节点的标识和它的能力(协议版本号,支持的Diameter应用,支持的安全机制等)。
●DWR/DWA:一旦传送层或应用层发生故障,Diameter需要立即发现并采取正确的行动。Diameter检测故障的机制基于应用层监督。当两个Diameter节点建立通信时,如果一个节点发送请求,并在规定的时间内没有收到应答,就可以检测到传送层或应用层出现了故障。如果没有定期的通信,就无法检测到潜在的故障。通过在Diameter节点发送DWR消息,检测传送层和应用层,从而解决了上述问题。若没有收到DWA,则可以断定有故障发生。
●DVR/DVA:以上两组Diameter消息中,CER/CEA保证了节点有权限和服务器进行能力交互,DWR/DWA保证了客户端和服务器之间链路的顺畅,在此基础之上DVR/DVA消息才是真正实现摘要认证,客户端携带Digest-Username AVP,Digest-Realm AVP,Digest-Nonce AVP等RADIUS(Remote Authentication Dial In User Service,远程认证拨号用户服务)应用于Digest认证的扩展,根据客户端和服务器间的双向认证实现HTTP Digest的算法计算应答认证值并存储在Digest-Response-Auth AVP值域通过DVA消息返回。
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协议实现等,不但符合各自性能要求,而且保障各自的安全性。
|