2. 中国电子科技集团公司第五十四研究所 通信网信息传输与分发技术重点实验室, 石家庄 050081
基于对4A能力(认证、鉴权、计费、审计)组件的需求分析, 设计并实现了平台即服务(PaaS)平台中的4A能力组件.使用此组件的开放接口实现了个性化应用推荐服务, 证明了该组件的有效性及其在PaaS平台中的应用前景.提出的PaaS平台4A能力组件不但丰富了PaaS平台的能力, 而且简化了应用开发.
2. Science and Technology on Information Transmission and Dissemination in Communication Networks Laboratory, The 54th Research Institute of China Electronics Technology Group Corporation, Shijiazhuang 050081, China
According to the analysis of application requirements, authentication, authorization, accounting and audit (4A) enabler in platform as a service (PaaS) platform was designed and implemented. To verify the usability of the 4A enabler and its application prospects in PaaS, a personalized recommendation application was brought forward using the open application programming interfaces of the 4A enabler. 4A enabler in PaaS mentioned here not only enriches the capabilities of the PaaS Platform, but also simplifies the application development.
平台即服务(PaaS, platform as a service),作为云计算的一种应用形态,为应用开发者提供了高效安全的应用托管能力[1].随着PaaS云平台的不断发展,平台能力的丰富性和多样化成了PaaS平台的核心竞争点和关键指标[2].所谓平台的“能力组件”主要指的是通过PaaS平台提供,可以被平台上的其他应用所调用的软件能力. 4A是Authentication(认证)、Authorization(鉴权)、Accounting(计费)和Audit(审计)的缩写,4A为用户提供统一的用户身份认证管理、应用接入(访问)权限控制、计费和账户管理,以及基于操作日志的审计等功能.通过对PaaS平台上的应用进行分析[3-4],可以发现很多应用均需要基本的4A能力,如用户信息管理和账号管理等.因此,4A能力组件正是PaaS云平台中可被重用的重要组件之一,它可以有效地减少应用开发量,增加软件资产重用度,同时丰富强大的平台能力也可以使平台之上的应用具备更丰富更强大的功能,提高应用竞争力.在提供4A能力的同时,4A能力组件还向用户提供单点登录(SSO, single sign on)功能,从而方便用户在各个应用之间无缝切换,从而可以一站式地满足用户和应用的需求,提供统一认证、鉴权管理、账号管理、审计管理和SSO等功能需求.
1 4A能力组件的需求分析4A能力组件为用户提供用户注册、密码找回、信息管理、计费管理等账户管理相关的功能,提供统一的认证服务,提供不同应用的鉴权管理,提供用户行为信息的审计管理,并支持SSO等功能.
4A能力组件的应用对象分别是PaaS云中的应用开发者、应用用户和管理员. 4A能力组件为应用开发者提供简单、安全、高效的接口,方便开发者使用.为了保证一站式服务的用户体验,4A能力组件为应用用户和管理员提供用户门户和管理员门户,从而完成用户信息和应用信息的管理.
4A组件的功能主要包括账户管理、认证管理、鉴权管理、审计管理和SSO等.
1) 账户管理:账户管理共分为3部分.首先是基本的账号管理,包括用户注册、找回密码、修改密码等.其次是用户信息的管理,包括用户基本信息(用户基本信息、用户扩展信息和用户权限信息)和好友信息(好友信息、好友关系和好友群组).最后是计费信息,包括用户余额和交易明细等.
2) 统一认证:统一认证用于判断用户是否合法.认证过程通过OAuth2.0协议来实现.应用开发者需要获得用户的授权凭证access_token才可以使用能力组件提供的开放接口. access_token是第三方访问用户资源的凭证,通过该凭证,第三方应用才可以访问4A能力组件中的各项数据.
3) 应用鉴权:只有通过系统授权的应用才可以获得用户信息.在应用通过4A能力组件获取用户信息时,将会对第三方应用进行授权检查,未被授权的应用将不会得到任何用户信息.
4) 系统审计:4A能力组件通过日志系统记录用户行为以及系统运行信息,并完成相关日志的采集、存储和分析.
5) SSO:SSO是目前比较流行的系统整合的解决方案. SSO可以保证在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.
2 4A能力组件设计2.1 系统架构系统架构图如图 1所示.系统共分为3个部分,顶层是Web服务层,即与开发者、用户和管理员交互的接口服务器(API Server)和Web界面. Web服务层主要负责管理员门户的展示,并向应用开发者提供开放应用编程接口(API,application programming interface).特别指出的是,4A能力组件将用户门户作为能力组件的第三方应用,并未和管理员门户排列在同一层.这是因为管理员门户需要拥有较高的权限,开放API并未提供相关功能,而且调用开放API也会造成效率下降.中间是逻辑功能层,其主要完成系统中全部逻辑功能的实现,包括账户管理、统一认证[5]、应用鉴权、系统审计和SSO[6]等.系统底层是基本组件层,包括基础组件和支撑组件.基础组件是系统运行的必备组件,主要包括MySQL、NFS以及邮件服务等.支撑组件是支撑系统运行的可选组件,主要包括日志系统等.以下将重点对日志系统和接口服务器加以介绍.
日志系统是4A能力组件的支持组件,负责记录4A能力组件中用户的行为信息,与4A能力组件中的审计模块相关联,其系统架构如图 2所示.
日志系统支持海量日志数据的采集、存储和分析.系统提供日志的高性能写入和读取,包括实时读取最新日志和批量读取历史数据.日志系统由Kafka分布式消息队列、HBase分布式数据库、生产者程序以及消费者程序组成[7].生产者程序是4A能力组件中的审计模块,它可以提供用户的用户行为数据.消费者程序是基于HTTP协议的API服务器,日志系统通过API向4A能力组件提供各类日志信息.
2.3 接口服务器(API Server)4A能力组件提供的开放API由4A能力组件中Web服务层的API Server提供.
2.3.1 API设计根据4A能力组件的开发者需求划分,将开放API定义为两类:
1) 用户级API:针对利用OAuth2.0登录的用户,必须携有access_token参数.用户级API主要用于个人用户信息的访问.
2) 应用级API:针对不使用OAuth2.0登录,并已通过授权的第三方应用.应用级API将带有参数source而非参数access_token.参数source是由4A能力组件管理员为应用分配的唯一标识.
根据系统功能划分,API分为以下7类:
1) 认证API:http://<4A-enabler-url>/api/oauth2/.
2) 用户关系API:http://<4A-enabler-url>/api/friendships/.
3) 群组API:http://<4A-enabler-url>/api/friendships/groups/.
4) 用户信息API:http://<4A-enabler-url>/api/users/.
5) 账号API:http://<4A-enabler-url>/api/account/.
6) 计费API:http://<4A-enabler-url>/api/billing/.
7) 日志API:http://<4A-enabler-url>/api/log/.
2.3.2 API安全方案为了保证用户信息的安全可靠,对于用户级API和应用级API采用不同的安全方案.
1) 用户级API
用户级API利用access_token是否过期或者是否有效来判断用户的真实性,并返回相应的数据.用户的access_token仅在用户登录时间内有效,并且有效期为24小时.
对于OAuth2.0相关API,还增加如下安全措施:
① OAuth2.0获取参数code时,可以增加参数state,用于保持请求和回调的状态.当4A能力组件重定向到该应用时,会回传该参数.开发者可以利用这个参数验证请求的有效性,从而防止跨站请求伪造攻击.
② OAuth2.0通过参数code获取参数access_token时,尽量选择HTTP协议的POST方式来传递请求.
2) 应用级API
应用级API仅仅传递参数source作为应用身份的身份验证并不安全,因此4A能力组件利用参数signature来保护用户信息.构造参数signature的流程如下:
① 分类参数:将API中携带的参数分为系统参数和非系统参数.系统参数包括应用ID(参数source)和应用密钥(与参数source唯一匹配).非系统参数是除了系统参数外的所有参数.
② 构造源串:将所有非系统参数以及参数source按名称值进行字典升序排列,并用“ & ”进行拼接,形如k1=v1 & k2=v2 & …,然后将得到的字符串进行第一次MD5加密.
③ 构造密钥:在应用密钥末尾加上字符“ & ”.
④ 生成签名值signature:将源串与密钥按照“k1=v1 & k2=v2 & … & secret & ”的形式拼接,生成一个新的字符串,并将此值再次进行MD5加密.注意,连接的顺序会影响最终的签名值.
4A能力组件的API Server获取API中的各项参数,按照上面的算法进行同样的加密处理.如果得到的签名值与参数signature一致,证明API安全.
3 基于4A能力组件的推荐应用3.1 4A能力组件和推荐应用的关系传统的4A组件都只是提供4A功能,如用户信息、好友信息等.但是4A数据的特性使得这些数据可以用于更加广阔的应用范围.基于4A能力组件的推荐应用是PaaS云平台中4A能力组件的一个应用示例.该应用对4A能力组件中采集的用户行为信息进行分析,并为用户个性化推荐PaaS云平台中现有的第三方应用.用户通过个性化服务快速定位自己喜欢的应用,从而解决人们在访问互联网时面临的“信息过载”问题.
4A能力组件记录用户在使用4A能力组件时所有的用户行为,并对外提供日志API.根据4A能力组件的特点,用户行为包括用户注册、用户登录、第一次登录、登录时长等.此外,在4A能力组件的用户门户中,用户还可以自行填写个人兴趣信息,为个性化推荐提供直接的数据支持.
推荐应用首先需要接入到4A能力组件.接入工作主要是由4A能力组件的管理员对应用进行审核,并为应用分配独一无二的应用ID和应用密钥对.然后,推荐应用便可以通过日志API采集4A组件提供的用户行为数据,并在此数据的基础上进行数据处理、用户兴趣建模和算法推荐.
3.2 推荐应用系统架构用户访问一个应用,通常带有某种喜好.推荐应用根据用户注册的个人信息,定制用户描述文件.文件可以由用户主动地修改,也可以由应用自动地修改.当文件被应用修改时,应用需要收集用户行为数据,学习用户兴趣,从而调整用户兴趣模型,完成推荐算法.给出的推荐应用的系统架构如图 3所示.推荐流程由数据收集、用户建模和个性化推荐3个阶段完成.
1) 数据收集阶段:此阶段根据4A能力组件提供的用户信息和用户行为信息完成用户行为的收集和数据处理.用户数据的采集方法有显式反馈和隐式反馈两种.显式反馈要求用户主动进行反馈和评价.隐式反馈由应用自动完成反馈,不会给用户增加额外的负担.应用采用显式反馈和隐式反馈共同实现数据采集的过程.显式反馈采用用户信息填写的方式,隐式反馈调用4A能力组件的日志接口获取用户行为数据. 4A能力组件的审计模块详细记录了用户访问站点的数据,每当站点上的页面被访问一次,Web服务器就在日志中增加一条日志记录,包括用户IP、用户名、应用名、请求时间、请求页面的URL等属性.此外,审计模块也会完成数据的基本处理.
2) 用户兴趣建模阶段:此阶段根据用户的兴趣建立评价矩阵模型.用户-项目评价矩阵用一个Rm×n矩阵来表示用户模型,其中m为用户数,n为项目数.矩阵R=[rij]中的每个元素rij表示了用户i对项目j的评价结果,一般是某个实数范围内的整数值(如1~10).通常值越高,说明用户对项目的兴趣度越高.这种表示方法简单、直观,而且可以在显式反馈收集的信息中直接生成.
(1) |
本应用中,rij是用户i在一段时间内对应用j的兴趣度.兴趣度的值通过用户i对应用j的访问次数、访问时长、SSO过程中是否第一次登录即进入本应用以及是否在本应用注册等方面加权得到.
3) 个性化推荐阶段:此阶段根据用户相似度获得用户邻居集合.再根据邻居用户对目标用户未评分的项目进行预测评分,返回评分最高的N(Top-N)项推荐.
4 结束语针对现有PaaS平台中的开放能力局限、现有应用功能单一、4A体系不规范等问题,提出了PaaS云中的4A能力组件.该组件分为账户管理、统一认证、应用授权、系统审计和SSO 5个模块,并通过开放API、用户门户和管理员门户为开发者、用户和管理员提供丰富安全的Web服务.根据4A数据的特点和4A能力组件可提供的能力,创新性地设计实现了基于4A能力组件的推荐应用.该应用利用用户兴趣模型和协同过滤算法实现对PaaS云平台现有应用的推荐,同时也验证了4A能力组件的可用性和其应用范围的广泛性.
设计实现的4A能力组件已经应用在北京邮电大学“云海”PaaS平台上,并被平台上的多个第三方应用所使用,如:面向群组的在线知识管理应用及其管理员门户(http://freeshare.free4lab.com, http://freeshareadmin.free4lab.com)等.通过使用4A能力组件,第三方应用开发者简化了应用开发流程,节省了应用开发时间. PaaS云中的4A能力组件增加了软件资产的重用度,较好地规范了用户信息的管理流程,开创了用户信息管理服务的新模式.
[1] |
徐鹏, 陈思, 苏森. 互联网应用PaaS平台体系结构研究[J]. 北京邮电大学学报, 2012, 35(1): 120–124.
Xu Peng, Chen Si, Su Sen. Architecture of PaaS for internet applications[J].Journal of Beijing University of Posts and Telecommunications, 2012, 35(1): 120–124. |
[2] | Chandra K. The app scale cloud platform: enabling portable, scalable web application deployment[J].IEEE Internet Computing, 2013, 17(2): 72–75. doi: 10.1109/MIC.2013.38 |
[3] | Stefan W, Eddy T, Wouter J. Comparing PaaS offerings in light of SaaS development: a comparison of PaaS platforms based on a practical case study[J].Computing, 2014, 96(8): 669–724. doi: 10.1007/s00607-013-0346-9 |
[4] | Luis O C M, Giner A H, Alejandro R G, et al. MobiCloUP!: a PaaS for cloud services-based mobile applications[J].Automated Software Engineering, 2014, 21(3): 391–437. doi: 10.1007/s10515-014-0143-5 |
[5] | Feng Yang, Sathiamoorthy Manoharan. A security analysis of the OAuth protocol[C]//Pacific RIM Conference on Communications, Computers, and Signal Processing (PACRIM) 2013. Victoria, BC: IEEE Press, 2013: 271-276. |
[6] |
胡毅时, 怀进鹏. 基于Web服务的单点登录系统的研究与实现[J]. 北京航空航天大学学报, 2004, 30(3): 236–239.
Hu Yishi, Huai Jinpeng. Research and implementation on web services-based single sign-on system[J].JournaI of Beijing University of Aeronautics and Astronautics, 2004, 30(3): 236–239. |
[7] | Zhang Dawei, Sun Fuquan, Cheng Xu, et al. Research on hadoop-based enterprise file cloud storage system[C]//Awareness Science and Technology (iCAST) 2011. Dalian: IEEE Press, 2011: 434-437. |
[8] | Chen Yanni, Yu Min. A hybrid collaborative filtering algorithm based on user-item[C]//Computational and Information Sciences (ICCIS) 2010. Chengdu: IEEE Press, 2010: 618-621. |