作者简介作者简介:刘林东(1986-),男,硕士,新疆财经大学初级实验师,研究方向为计算机控制技术;吴向前(1960-),男,硕士,新疆财经大学高级工程师,研究方向为网络技术。0引言
随着信息技术的发展,各大医院为了提高其服务水平和核心竞争力,都在寻求新的出路,数字医院的概念应运而生。数字医院[1,2]并没有一个标准的定义,简单来说,其目的就是打破传统的医院管理模式,采用先进的计算机及网络技术,整合医院的可用信息,在全院范围内实现数字化信息共享。
而在医院的系统整合中,由于正在运行的系统种类繁多,而且各个系统之间基本是独立运行,每个系统都需要进行身份认证,用户需要记忆大量的用户登录信息,这增加了系统管理的难度,给用户和管理者带来了诸多不便。因此,单点登录是解决“信息孤岛”问题的首选方案。
单点登录[3,4]英文全称是single sign on,简称为sso,在系统整合解决方案中,它的认可度较高,其功能就是让用户在已授权的应用系统中自由穿梭而毫无阻碍。现阶段实现sso的技术有:①基于cookies实现;②基于经纪人(brokerbased);③基于代理人(agentbased);④基于网关(agent and brokerbased);⑤基于安全断言标记语言(saml)等。根据医院的实际需求,本文采用基于cas的单点登录技术。
1yale cas工作机制
cas(central authentication service) [57]是由yale 大学开发的基于java servlet技术的系统,因为结构清晰、二次开发容易、支持多种客户端和开源而广受欢迎。cas经历了由cas1到cas3的发展,已成为非常稳定并广泛应用的sso产品。
从cas的体系结构(见图1)看,它有两个部分:cas server和cas client。cas server的工作就是对用户的真实身份进行审核,它的认证细节灵活多变;cas client部署在客户端(只纳入单点登录的web 应用),以filter方式保护web应用的受保护资源,过滤从客户端过来的每一个web请求。如用户不具有访问凭证,则重定向到cas server进行认证。
图1cas基础协议体系结构
cas基础协议原理: 对于用户第一次提出访问请求,cas client会将其过滤掉,假如检测不到服务票据(service ticket),就认为这个用户必须重新进行认证并将其返回到原定的认证地址,同时缓存目的资源地址(service),方便用户返回。待用户身份认证成功,cas service就会随机产生一个服务票据,这个票据就相当于“通行身份证”,唯一并不可伪造。凭此通行证,用户可以无缝访问权限内的应用。在此过程中,几乎所有传输都采用了 ssl 协议,以此来确保st 的安全性。
2系统框架
笔者设计的面向数字医院的单点登录系统提供了一个统一且高度集成的身份认证体系,以cas单点登录为核心,实现对用户的统一认证,该系统结构灵活、安全可靠、系统健壮,可以较好的满足数字医院的要求。基于cas的单点登录框架如图2所示。医务工作人员和患者等用户在第一次访问所需应用时,可以通过统一的身份认证门户登录,验证成功后无需再次登录,可以无缝访问其它已授权的应用系统。
图2cas单点登录框架
3基于cas单点登录的实现
3.1casserver配置
本文以tomcat下cas的配置为例来描述实现数字医院环境下的单点登录过程。实现环境为:jdk1.6.0+apachetomcat6.0.35+cas server3.4.11+cas client2.1.1+mysql数据库。cas server配置主要包括以下几个步骤:
(1)复制casserverwebapp3.4.11.war到tomcat\\webapps下,修改名称为cas1.war。打开服务器,并检验是否可以访问。
(2)修改用户验证方式,连接数据库。找到deployerconfigcontext.xml文件内的原数据库验证代码,注释掉原代码并添加新的数据库验证方式。
(3)用jdk自带的keytool工具生成数字证书,并将该证书导入到客户端。
(4)应用证书到web服务器tomcat。打开tomcat目录的conf/server.xml文件,开启83和87行的注释代码,并设置keystorefile、keystorepass修改结果如下:
3.2casclient配置
首先找到casclient2.1.1下modules文件夹内的casclientcore2.1.1.jar和 commonslogging1.1.jar文件,并复制到应用程序目录的webinf\\lib中,然后修改web.xml文件,为客户端添加过滤器:
cas filter
edu.yale.its.tp.cas.client.filter.casfilter
edu.yale.its.tp.cas.client.filter.loginurl
https://localhost:8443/cas1/login
edu.yale.its.tp.cas.client.filter.validateurl
https://localhost:8443/cas1/servicevalidate
edu.yale.its.tp.cas.client.filter.servername
localhost:8080
cas filter
/*
3.3系统应用
当用户首次使用浏览器请求访问cas系统服务的某个应用时,web请求首先被cas过滤器捕获并重定向到登录页面,如图3所示,待用户填写正确的用户名和密码后转向cas服务器,认证服务器会将该用户信息和mysql数据库内的存储用户信息进行核对,通过后台服务器会生成一个唯一的st,也就是用户的身份凭证,此时用户即可凭借该凭证在有效期内无缝访问已经授权的应用系统。