云环境下跨域单点登录解决方案
   来源:现代电子技术     2017年10月08日 04:41

陈萱华+林淑玲+杨玲

摘  要: 在比较现有的3种单点登录模型优缺点的基础上,分析跨域单点登录应有的基本功能,尝试建立一种云环境下的跨域单点登录系统。方案利用Web Service技术封装原有系统和构建身份映射功能,使原有系统在改动尽量小的情况下与新系统的认证实现无缝对接;通过部署身份认证系统群、跨域控制器、票据授权服务器、传输加密和用户信息库等措施实现云环境下跨域跨平台的集中认证。方案实施简单,安全性高,可扩展性好。

关键词: 云环境; 单点登录; 用户认证; 跨域; 云服务

中图分类号: TN919?34; TP399                  文献标识码: A                      文章编号: 1004?373X(2015)02?0049?03

Solution for cross?domain single sign?on in cloud environment

CHEN Xuan?hua1, LIN Shu?ling1, YANG Ling2

(1. Department of Electronics Technology; Public Security Marine Police Academy; Ningbo 315801, China;

2. Computer Teaching and Research Office, Beijing Command College of Chinese Peoples Armed Force; Beijing 100012, China)

Abstract: On the basis of comparison between advantages and disadvantages of the three existing single sign?on models, basic functions of cross?domain single sign?on are analyzed. A try at establishing a cross?domain single sign?on system in cloud environment was made. A solution using Web Service technology to encapsulate the original system and construct identity mapping function was design to make certification achieve seamless docking between the original system with least change and the new system. The solution achieves the centralized certification under cross?border and cross?platform in cloud environment through the deployment of authentication systems group, cross?domain controller, note authorized server, transmission encryption and user information database. he solution has the characteristics of simple operation, high safety and good scalability.

Keywords: cloud environment; SSO; user authentication; cross?domain; cloud service

0  引  言

云计算环境具有资源集中、用户海量、有偿按需服务等特点,云端存储了大量的用户敏感数据,一旦用户身份被仿冒,就很容易造成隐私和敏感数据的泄露,而70%的数据泄漏是通过外部的输入源带进系统的,所以为了保证云服务的安全,必须对进入系统的用户身份和其他输入源的身份有较强的认证[1?2]。身份认证是其他安全策略的基础,也是其他安全策略实现其安全功能的前提条件。随着云计算的不断成熟,提供的服务也越来越多,这些服务分布在不同的服务器,分布在不同机构的域中,每个服务都有属于自己的数据库,用户通过云终端登录虚拟桌面访问每一个服务时需要提供用户名密码或其他认证方式,在切换服务时进行越来越多的登录。这种相对分散繁琐的身份认证机制对用户造成极大的精神负担,为了减轻负担,用户可能将密码设置成容易记住的如纯数字或字母等,甚至对各种认证设置相同的密码,或者将复杂密码记录在纸上贴在工作台上,这些做法会降低系统的整体安全性,密码被非法截获的可能性增加,使系统容易被破解或攻击从而造成不必要的损失[3]。对管理员来说, 被迫管理越来越多的身份,对用户职责权限的维护也需要花费大量的时间进行调整。因此云环境下建立跨域的单点登录系统,实现一处登录,在权限范围内处处可用,减少安全隐患,减轻用户和管理员的负担成为当前云计算安全研究的热点。

1  现有单点登录系统的模型及其优缺点

单点登录,即SSO(Single Sign?on),是解决用户访问几个系统登录几次的问题,在用户使用的多个系统或服务中,用户在一定时间内只需要一套认证方式就能够对这些系统或服务进行权限内的访问。登录一次就可使用经认证的所有系统甚至实现跨域认证。

目前实现单点登录的模型主要有网关模型、代理模型、和令牌模型[4]等3种。网关模型由客户端、网关和应用服务器组成。网关连接着客户端和应用服务器,它是客户端访问服务器的关卡。实现单点登录的关键是在网关上配置身份认证模块,对原有系统不需进行大的修改,但它的安全性和效率受到极大的考验。不适合大规模用户认证,且受到攻击时易危及到服务器的安全。代理模型由客户端、代理软件和应用服务器组成。代理软件的作用就是为不同的应用程序进行身份认证,在客户端和服务器之间充当翻译的作用。它可以安装在客户端或服务器上,这种方式不需要对应用服务进行改动,具有良好的可扩充性。但因为它要求每一个服务配置一个代理软件,开发的难度和工作量比较大,通用性较差。令牌模型由客户端、认证服务器和应用服务器组成。认证服务器提供一个公共和独立的“第三方”,方便扩展,适合大规模的用户认证,但这种方案必须改造旧的应用系统,需付出极大的代价。通常是在单域环境下通过门户实现单点登录,利用cookie的形式或通过隐藏字段中的加密值来提供安全令牌,这种方式限制了跨域登录。对应三种模型,目前有一些比较成熟的单点登录解决方案,如微软的Passport、IBM的Web Sphere Portal Server、CAS,但它们有着不同的侧重点,适合于不同的平台与架构,系统比较复杂,缺乏灵活性,而且价格和学习成本都比较高,不太适合小中型企业的部署和应用[5]。本文在比较现有的3种单点登录模型优缺点的基础上,针对云环境的特点,尝试建立一种云环境下的跨域单点登录系统。

2  基于云环境的单点登录方案

云环境的主要应用模式是SaaS,客户通过Web的方式访问云资源。目前云环境单点登录主要综合上述3种模型的优势,使用云资源提供者的专有API建立个人链接,访问时将相同的用户登录凭证发送给每个应用程序。但随着云资源供应商的增多,将给用户带来维护和管理上的不便。本方案采用认证群,认证群实现与各种SaaS应用的后端整合,用户端只需进行Web Service包装,这样用户端可以做最少的修改,有较好的兼容性和扩展性。

2.1  云环境单点登录的基本功能

从前面可知,比较有效的单点登录必须能保证一个实体(包括用户和资源,以下均以用户替代)通过了一次身份认证后,在一段合理的时间内访问受信的其他资源时,不再需要进行身份验证,同时享有原来的权限。因此单点登录的基本功能应包括统一身份认证、原有系统到新系统的身份映射和统一用户管理,在此基础上实现跨域身份联合认证,并提供身份认证的安全性管理[6?7]。

(1) 统一身份认证。云环境的用户为完成某一任务经常需要调用内部和外部的多个资源,这些资源可能跨平台异构、跨多个域,访问时会出现跨越多个信任域带来的跨域服务的联合单点登录验证,但是不能要求每个服务提供者都直接参与认证过程。因此,统一身份认证需要考虑跨域、联合身份认证、委托代理、云服务资源及用户数量的无限扩展性等情况,就可能存在多个认证系统及第三方做身份认证的联合管理,将这些认证系统构成认证群。为方便认证系统间的通信,可以设置一个跨域控制器,同时设置票据授权服务器进一步减轻云服务提供者的负担。控制器负责将请求重定向到对应的域认证服务,票据授权服务器生成云服务对应的票据。所有云服务要共享一个身份认证系统,也就是我们常说的统一认证系统,这是单点登录的前提之一。统一身份认证为云服务提供统一的用户管理平台和身份认证服务,使用户管理与老系统实现无缝对接,实现透明地访问所有授权的资源。

(2) 原系统到新系统的身份映射。为了使系统做最小的更改,保留访问原有资源的登录账号和密码及其权限,本方案采用如下方式:在统一身份认证中心创建一个统一登录用户名,并通过身份映射实现该用户名与用户原有各应用的用户名进行映射,形成对应关系。这样,用户登录统一身份认证完成认证后,系统利用身份映射功能就可以访问云端相应的云服务。

(3) 统一用户管理。访问控制是安全策略的基础,通过对用户的授权保证资源不被非法访问,如在用户职责发生变更或离开现有组织时,相关系统的管理员都要花费大量的时间修改其账户属性或者删除用户。单点登录系统中的统一用户管理只要向相关的应用程序发出修改或删除账户的命令即可。新的应用系统加入时,可以直接使用统一认证系统,不必再向以前那样建立自己的认证系统。大大减少了管理员的工作量,同时也避免了遗漏等造成权限滥用的出错问题。

2.2  云计算单点登录的原理及模型

随着云计算应用的逐步深入,各公司各机构都会构建自己的共享资源,并且拥有自己的用户,为了保护云服务形成了各自的信任域。用户通过本地认证服务器的认证可以访问域内相应的资源,用户访问其他域的资源时就存在跨域认证的问题。

为实现跨域、跨平台的联合身份认证,与原系统无缝对接,还要使原有系统尽可能只做最小的改动。采用统一身份认证,用户信息集中管理的方式[8]。原有的系统采用Web Service技术构建验证服务替代原来的用户认证模块,并按照SOAP协议的要求封装报文,以便能快速地与其他应用系统对接。认证系统之间通过标准的通信协议互换认证信息[9?10]。模型的具体结构如图1所示。

<E:\王芳\现代电子技术201502\Image\16t1.tif>

图1 单点登录系统模型

图1中,票据授权服务器(Ticket?Granting?Sever,TGS)接受用户访问特定资源的请求,负责生成访问该资源的票据(Ticket)。用户使用这个票据,不需要再次认证就可以直接访问授权的云服务;认证系统群(Authentication?System?Group,ASG)负责用户认证,产生访问TGS的票据,完成安全可靠的认证。用户信息库主要包括用户表,云服务表,用户与云服务表,cookie?ticket表等。原有系统中云服务提供者承担用户的认证和授权,随着服务数量和用户数量的增加,服务提供者的压力将呈非线性增加。为减轻服务提供者参与用户进行认证和授权的负担,构建多个身份认证系统构成认证系统群提供集中认证服务,通过身份映射实现统一登录用户与原有用户的对应,并将对应结果存储在用户信息库中。这样可降低云服务提供者的用户管理负担和整个系统的复杂性。

当用户向云服务发送访问请求时,首先会被重定向到认证中心查看用户是否完成了统一登录,如果是第一次登录,需要认证服务器进行统一身份认证;如果用户已经成功登录,会得到登录票据,向TGS请求该用户的认证信息,TGS从用户信息库中提取该用户对应云服务的访问用户名,并返回客户端,用户使用这个用户名登录云服务,并根据权限访问相应的资源。为了保证认证信息在传递过程中的安全,防止票据在传输过程中被截取并篡改,可以对用户信息、生成的票据及其校验信息进行加密,针对实际情况可以采用AES加密用户信息及生成的票据,采用SHA?1算法加密校验信息[11]。单点登录的具体流程及部分关键代码如下[12?13]:

(1) 云客户端向云服务1发送访问请求时,如果是第一次登录,会被重定向到统一登录页面,使用ASG提供的账号信息向ASG发送认证请求,跨域控制器将请求转到域内认证服务器AS,访问用户信息库进行统一身份认证,转入(2);否则,已经通过认证并在有效期内,则直接访问云服务1。

if(ticket1==null)                    

{

Response.sendRedirect("LoginServlet?url="+validate_url);

}

认证服务器:

主要执行认证函数doValidate。

将用户输入的用户名密码与用户信息库逐条比对,假设用户名密码都为zh_s

if("zh_s".equals(username)&& "zh_s".equals(psw))

//通过认证

Cookie ticket1=new Cookie("zh_s","100");

认证函数执行后返回ticket1和用户要访问的应用app1。

(2) ASG成功认证后,向云客户端返回访问TGS的票据Ticket1和与TGS通信的会话密钥。

(3) 云客户端使用Ticket1和相关请求信息,经会话密钥加密,向TGS请求访问云资源的票据。

(4) TGS查询用户信息库,并根据授权信息,确认请求合法后,根据授权信息生成相应的访问云服务的票据Ticket2,向云客户端发送Ticket2和与云服务通信的会话密钥。

if(ticket1!=null&&"zh_s".equals(ticket())//已获取ticket1

{

根据用户ticket1和app1,查找用户信息库中的用户与云服务表,取得用户的角色role

String role= rs.getString("role");

String ticket2= rs.getString("ticket");

}

(5) 云客户端使用Ticket2和相关请求信息,经会话密钥加密,向云服务发送访问请求。

(6) 云端收到访问请求后,使用通信密钥解密,提取信息中的用户ID、要访问的服务ID和相应的授权信息,确认请求的合法性后,向客户端发送允许访问的响应,并授予相应的访问权限。否则拒绝用户访问请求。

(7) 当相同的用户访问云服务2时,将请求重定向到ASG,用户保存的Ticket1将被认证,此次不需要输入用户名和密码,重复(3)后面的步骤即可完成单点登录。

3  结  语

跨域单点登录方案采用用户集中认证和TGS部署,云服务只需进行自己用户的认证,减少了常规用户验证的次数。对用户来说,减少了登录次数和多密码的记忆,实现一次登录认证就可以访问所有授权的服务,提高了工作效率,降低了安全风险。跨域的认证加强信任域间的互联互通,降低管理成本。传输加密和严格流程的实施,将用户的认证信息和票据通过加密安全地传递到云端,提高了系统的安全性。本方案在学院新构建的云计算中心及其实验室搭建的跨域网站得到了验证,下一步将在公安内部进行推广。

参考文献

[1] 陈萱华,李学亚.桌面虚拟化技术在公安院校网络安全接入中的应用[J].计算机与现代化,2013(5):121?123.

[2] 余幸杰,高能,江伟玉.云计算中的身份认证技术研究[J].信息网络安全,2012(8):71?75.

[3] 吴贤平.基于指纹识别和CAS的单点登录模型技术研究[J].计算机应用研究,2012(4):1381?1383.

[4] 张福年.基于票据的单点登录技术在青海减排综合信息平台中的应用[J].青海环境,2013(12):178?180.

[5] 张政.单点登录技术在SAP_ERP中的应用[J].计算机与现代化,2013(11):188?191.

[6] 黄宝君.基于Web Service的单点登录系统的设计与实现[D].北京:北京交通大学,2012.

[7] 裴华艳,王焕民.基于CAS的单点登录平台的研究与实现[J].电脑知识与技术,2014(1):534?536.

[8] 王志瑞,刘正涛,曹阳.一种轻量级的跨域单点登录解决方案[J].计算机应用与软件,2013(7):268?270.

[9] 牛炎.基于Web Service的单点登录功能设计与实现[J].电脑知识与技术,2010(29):8241?8243.

[10] 杨艳明.基于SAML的单点登录技术在校园网中的应用研究及实现[J].楚雄师范学院学报,2013(9):22?25.

[11] 李鑫,李俊.基于跨域单点登录令牌的设计与实现[J].计算机光盘软件与应用,2014(2):61?62.

[12] JIAN Y. An improved scheme of single sign?on protocol [C]// International Symposium on Information Assurance and Security. Xian, China: IEEE, 2009: 495?498.

[13] 房晶.云计算的虚拟化安全和单点登录研究[D].北京:北京交通大学,2011.

当用户向云服务发送访问请求时,首先会被重定向到认证中心查看用户是否完成了统一登录,如果是第一次登录,需要认证服务器进行统一身份认证;如果用户已经成功登录,会得到登录票据,向TGS请求该用户的认证信息,TGS从用户信息库中提取该用户对应云服务的访问用户名,并返回客户端,用户使用这个用户名登录云服务,并根据权限访问相应的资源。为了保证认证信息在传递过程中的安全,防止票据在传输过程中被截取并篡改,可以对用户信息、生成的票据及其校验信息进行加密,针对实际情况可以采用AES加密用户信息及生成的票据,采用SHA?1算法加密校验信息[11]。单点登录的具体流程及部分关键代码如下[12?13]:

(1) 云客户端向云服务1发送访问请求时,如果是第一次登录,会被重定向到统一登录页面,使用ASG提供的账号信息向ASG发送认证请求,跨域控制器将请求转到域内认证服务器AS,访问用户信息库进行统一身份认证,转入(2);否则,已经通过认证并在有效期内,则直接访问云服务1。

if(ticket1==null)                    

{

Response.sendRedirect("LoginServlet?url="+validate_url);

}

认证服务器:

主要执行认证函数doValidate。

将用户输入的用户名密码与用户信息库逐条比对,假设用户名密码都为zh_s

if("zh_s".equals(username)&& "zh_s".equals(psw))

//通过认证

Cookie ticket1=new Cookie("zh_s","100");

认证函数执行后返回ticket1和用户要访问的应用app1。

(2) ASG成功认证后,向云客户端返回访问TGS的票据Ticket1和与TGS通信的会话密钥。

(3) 云客户端使用Ticket1和相关请求信息,经会话密钥加密,向TGS请求访问云资源的票据。

(4) TGS查询用户信息库,并根据授权信息,确认请求合法后,根据授权信息生成相应的访问云服务的票据Ticket2,向云客户端发送Ticket2和与云服务通信的会话密钥。

if(ticket1!=null&&"zh_s".equals(ticket())//已获取ticket1

{

根据用户ticket1和app1,查找用户信息库中的用户与云服务表,取得用户的角色role

String role= rs.getString("role");

String ticket2= rs.getString("ticket");

}

(5) 云客户端使用Ticket2和相关请求信息,经会话密钥加密,向云服务发送访问请求。

(6) 云端收到访问请求后,使用通信密钥解密,提取信息中的用户ID、要访问的服务ID和相应的授权信息,确认请求的合法性后,向客户端发送允许访问的响应,并授予相应的访问权限。否则拒绝用户访问请求。

(7) 当相同的用户访问云服务2时,将请求重定向到ASG,用户保存的Ticket1将被认证,此次不需要输入用户名和密码,重复(3)后面的步骤即可完成单点登录。

3  结  语

跨域单点登录方案采用用户集中认证和TGS部署,云服务只需进行自己用户的认证,减少了常规用户验证的次数。对用户来说,减少了登录次数和多密码的记忆,实现一次登录认证就可以访问所有授权的服务,提高了工作效率,降低了安全风险。跨域的认证加强信任域间的互联互通,降低管理成本。传输加密和严格流程的实施,将用户的认证信息和票据通过加密安全地传递到云端,提高了系统的安全性。本方案在学院新构建的云计算中心及其实验室搭建的跨域网站得到了验证,下一步将在公安内部进行推广。

参考文献

[1] 陈萱华,李学亚.桌面虚拟化技术在公安院校网络安全接入中的应用[J].计算机与现代化,2013(5):121?123.

[2] 余幸杰,高能,江伟玉.云计算中的身份认证技术研究[J].信息网络安全,2012(8):71?75.

[3] 吴贤平.基于指纹识别和CAS的单点登录模型技术研究[J].计算机应用研究,2012(4):1381?1383.

[4] 张福年.基于票据的单点登录技术在青海减排综合信息平台中的应用[J].青海环境,2013(12):178?180.

[5] 张政.单点登录技术在SAP_ERP中的应用[J].计算机与现代化,2013(11):188?191.

[6] 黄宝君.基于Web Service的单点登录系统的设计与实现[D].北京:北京交通大学,2012.

[7] 裴华艳,王焕民.基于CAS的单点登录平台的研究与实现[J].电脑知识与技术,2014(1):534?536.

[8] 王志瑞,刘正涛,曹阳.一种轻量级的跨域单点登录解决方案[J].计算机应用与软件,2013(7):268?270.

[9] 牛炎.基于Web Service的单点登录功能设计与实现[J].电脑知识与技术,2010(29):8241?8243.

[10] 杨艳明.基于SAML的单点登录技术在校园网中的应用研究及实现[J].楚雄师范学院学报,2013(9):22?25.

[11] 李鑫,李俊.基于跨域单点登录令牌的设计与实现[J].计算机光盘软件与应用,2014(2):61?62.

[12] JIAN Y. An improved scheme of single sign?on protocol [C]// International Symposium on Information Assurance and Security. Xian, China: IEEE, 2009: 495?498.

[13] 房晶.云计算的虚拟化安全和单点登录研究[D].北京:北京交通大学,2011.

当用户向云服务发送访问请求时,首先会被重定向到认证中心查看用户是否完成了统一登录,如果是第一次登录,需要认证服务器进行统一身份认证;如果用户已经成功登录,会得到登录票据,向TGS请求该用户的认证信息,TGS从用户信息库中提取该用户对应云服务的访问用户名,并返回客户端,用户使用这个用户名登录云服务,并根据权限访问相应的资源。为了保证认证信息在传递过程中的安全,防止票据在传输过程中被截取并篡改,可以对用户信息、生成的票据及其校验信息进行加密,针对实际情况可以采用AES加密用户信息及生成的票据,采用SHA?1算法加密校验信息[11]。单点登录的具体流程及部分关键代码如下[12?13]:

(1) 云客户端向云服务1发送访问请求时,如果是第一次登录,会被重定向到统一登录页面,使用ASG提供的账号信息向ASG发送认证请求,跨域控制器将请求转到域内认证服务器AS,访问用户信息库进行统一身份认证,转入(2);否则,已经通过认证并在有效期内,则直接访问云服务1。

if(ticket1==null)                    

{

Response.sendRedirect("LoginServlet?url="+validate_url);

}

认证服务器:

主要执行认证函数doValidate。

将用户输入的用户名密码与用户信息库逐条比对,假设用户名密码都为zh_s

if("zh_s".equals(username)&& "zh_s".equals(psw))

//通过认证

Cookie ticket1=new Cookie("zh_s","100");

认证函数执行后返回ticket1和用户要访问的应用app1。

(2) ASG成功认证后,向云客户端返回访问TGS的票据Ticket1和与TGS通信的会话密钥。

(3) 云客户端使用Ticket1和相关请求信息,经会话密钥加密,向TGS请求访问云资源的票据。

(4) TGS查询用户信息库,并根据授权信息,确认请求合法后,根据授权信息生成相应的访问云服务的票据Ticket2,向云客户端发送Ticket2和与云服务通信的会话密钥。

if(ticket1!=null&&"zh_s".equals(ticket())//已获取ticket1

{

根据用户ticket1和app1,查找用户信息库中的用户与云服务表,取得用户的角色role

String role= rs.getString("role");

String ticket2= rs.getString("ticket");

}

(5) 云客户端使用Ticket2和相关请求信息,经会话密钥加密,向云服务发送访问请求。

(6) 云端收到访问请求后,使用通信密钥解密,提取信息中的用户ID、要访问的服务ID和相应的授权信息,确认请求的合法性后,向客户端发送允许访问的响应,并授予相应的访问权限。否则拒绝用户访问请求。

(7) 当相同的用户访问云服务2时,将请求重定向到ASG,用户保存的Ticket1将被认证,此次不需要输入用户名和密码,重复(3)后面的步骤即可完成单点登录。

3  结  语

跨域单点登录方案采用用户集中认证和TGS部署,云服务只需进行自己用户的认证,减少了常规用户验证的次数。对用户来说,减少了登录次数和多密码的记忆,实现一次登录认证就可以访问所有授权的服务,提高了工作效率,降低了安全风险。跨域的认证加强信任域间的互联互通,降低管理成本。传输加密和严格流程的实施,将用户的认证信息和票据通过加密安全地传递到云端,提高了系统的安全性。本方案在学院新构建的云计算中心及其实验室搭建的跨域网站得到了验证,下一步将在公安内部进行推广。

参考文献

[1] 陈萱华,李学亚.桌面虚拟化技术在公安院校网络安全接入中的应用[J].计算机与现代化,2013(5):121?123.

[2] 余幸杰,高能,江伟玉.云计算中的身份认证技术研究[J].信息网络安全,2012(8):71?75.

[3] 吴贤平.基于指纹识别和CAS的单点登录模型技术研究[J].计算机应用研究,2012(4):1381?1383.

[4] 张福年.基于票据的单点登录技术在青海减排综合信息平台中的应用[J].青海环境,2013(12):178?180.

[5] 张政.单点登录技术在SAP_ERP中的应用[J].计算机与现代化,2013(11):188?191.

[6] 黄宝君.基于Web Service的单点登录系统的设计与实现[D].北京:北京交通大学,2012.

[7] 裴华艳,王焕民.基于CAS的单点登录平台的研究与实现[J].电脑知识与技术,2014(1):534?536.

[8] 王志瑞,刘正涛,曹阳.一种轻量级的跨域单点登录解决方案[J].计算机应用与软件,2013(7):268?270.

[9] 牛炎.基于Web Service的单点登录功能设计与实现[J].电脑知识与技术,2010(29):8241?8243.

[10] 杨艳明.基于SAML的单点登录技术在校园网中的应用研究及实现[J].楚雄师范学院学报,2013(9):22?25.

[11] 李鑫,李俊.基于跨域单点登录令牌的设计与实现[J].计算机光盘软件与应用,2014(2):61?62.

[12] JIAN Y. An improved scheme of single sign?on protocol [C]// International Symposium on Information Assurance and Security. Xian, China: IEEE, 2009: 495?498.

[13] 房晶.云计算的虚拟化安全和单点登录研究[D].北京:北京交通大学,2011.

用户 记忆 票据