单点登录解决方案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单点登录解决方案背景...........................................................................................................................................................................1CAS简介..................................................................................................................................................................1基于CAS的单点登录解决方案..............................................................................................................................5一.CAS单点登录环境的搭建...........................................................................................................................5二.CAS与UniEAP的集成...............................................................................................................................7三.在配置CAS和使用CAS可能出现的问题...............................................................................................11背景随着互联网络应用的普及,越来越多的人开始使用互联网上提供的服务。然而目前提供服务的网站大多采用用户名、口令的方式来识别用户身份,这使得用户需要经常性的输入自己的用户名、口令。显然这种认证方式存在着弊端:随着用户网络身份的增多,用户相应的需要记忆多组用户名、口令,这给用户造成记忆上的负担;另外频繁的输入用户名、口令,会相应的增大用户的口令密码被破解的机率。为了改变这一现状,单点登录技术应运而生。单点登录技术的核心思想是通过一定的方式使得各提供服务的网站之间建立某种联系,用户只需要在其中一个认证网站进行登录后,即可实现全局登录,当用户再访问其他网站时,不需要再次登录,其身份就可以被验证。我们可以看到采用单点登录技术后,用户只需要记忆一组用户名、口令,并且在登录多个网站时只需要输入一次用户名、口令,这就使得用户可以更加安全快捷的使用互联网上的各种服务。UniEAP在支持行业事业部时,发现“单点登录”的需求还是非常多的,因此提供了一个以CAS为基础的单点登录解决方案。CAS简介CAS(CentralAuthenticationService),是耶鲁大学开发的单点登录系统(SSO,singlesign-on),应用广泛,具有独立于平台的,易于理解,支持代理功能。CAS系统在各个大学如耶鲁大学、加州大学、剑桥大学、香港科技大学等得到应用。SpringFramework的Acegi安全系统支持CAS,并提供了易于使用的方案。Acegi安全系统,是一个用于SpringFramework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用BeanContext,拦截器和面向接口的编程方式。因此,Acegi安全系统能够轻松地适用于复杂的安全需求。Acegi安全系统在国内外得到了广泛的应用,有着良好的社区环境。UniEAP中的安全框架是对AcegiSecurityforSpring框架的集成,因此,也方便集成CAS系统。CAS设计目标(1)为多个Web应用提供单点登录基础设施,同时可以为非Web应用但拥有Web前端的功能服务提供单点登录的功能;(2)简化应用认证用户身份的流程;(3)将用户身份认证集中于单一的Web应用,让用户简化他们的密码管理,从而提高安全性;而且,当应用需要修改身份验证的业务逻辑时,不需要到处修改代码。CAS工作原理CAS(CentralAuthenticationServer)被设计成一个独立的Web应用。实现原理非常简单,CASServer2.0.12的实现只有30个类,除了JDK本身外,只使用到一个servlet.jar包。它目前的实现是运行在HTTPS服务器的几个JavaServlet上(而客户端可以灵活采用http和https的方式)。通过以下三个URL来访问:LoginURL,ValidationURL和可选的LogoutURL。参考:的工作过程:注意,以上是CAS的普通工作模式,在第三步由CAS返回的是一个ticket,并没有任何用户名和密码等信息出现。这里说的单点登录,CAS中需要存在用户系统,在CAS2.0中,用户需要实现CAS中的PasswordHandler接口,而在CAS3.0中,已支持了多种认证方式,用户需要实现一个AuthenticationHandler接口,该接口有两个方法authenticate()及supports()。实现AuthenticationHandler接口的类只需在CAS服务器中的配置文件deployerConfigContext.xml中配置即可,CAS是基于Spring作的实现。CAS类图第一次通过CAS2.0.12认证的序列图如下图所示::CASClient:Login:TicketGrantingTicket:PasswordHandler:TicketGrantingTicket:ServiceTicket登录getTicket()authenticate(request)newTicketGrantingTicket()returnTGTnewServiceTicket(t,serviceId,first)returnSTreturnST服务器与代理之间的通信下图。第一步,用户访问WebApp1,向WebApp1发送请求,这个请求被单点登录代理拦截。第二步,单点登录代理将用户的请求重定向到单点登录服务器的登录界面第三步,用户在登录界面上,输入用户名和密码,进行登录。第四步,单点登录服务器到后台用户数据库验证用户输入的用户名和密码是否合法。本文设计的单点登录系统并没强制使用数据库验证,用户可以根据需求选用其他的验证方式。第五步,如果验证成功,服务器将创建这个用户会话用来访问目标应用的服务凭票。然后创建Cookie凭票和相应的Cookie(用来标识用户会话是否经过验证),产生的Cookie会被放到客户端浏览器。第六步,服务器再将附加了凭票的请求重定向到单点登录代理。第七步,单点登录代理接收到带有凭票的请求,然后去服务器验证这个凭票的合法性。验证这个凭票是合法的后,代理不会再拦截这个用户会话,用户请求直接到达目标应用。第八步,目标应用将欢迎界面返回给用户端的浏览器。同一个用户会话又访问了另一个也部署的单点应用的WebApp2,服务器与代理之间的通信过程见下图。第一步,用户访问WebApp2,向WebApp2发送请求,这个请求被单点登录代理拦截。第二步,单点登录代理将用户的请求重定向到单点登录服务器。第三步,服务器验证用户请求,从客户端浏览器器得到Cookie,经过和Cookie缓存中比较,发现这个用户已经登录,由于WebApp1和WebApp2都部署了单点登录,所以说这两个应用是互相信任的,即用户只要登录了WebApp1,再登录WebApp2就不需要再输入用户名和密码进行验证,所以服务器就不再需要到后台数据库验证。第四步,服务器将创建这个用户会话用来访问目标应用的服务凭票。第五步,服务器再将附加了凭票的请求重定向到单点登录代理。第六步,单点登录代理接收到带有凭票的请求,然后去服务器验证这个凭票的合法性。第七步,目标应用将欢迎界面返回给用户端的浏览器。基于CAS的单点登录解决方案一.CAS单点登录环境的搭建1.下载CASserver,版本为cas-server-2.0.122.下载CASjavaclient,版本为cas-client-2.0.113.部署CASserver,将cas-server-2.0.12.zip解压,并将lib/cas.war拷贝到Server1的webapps下。Server1是一个servlet2.3兼容的服务器上,并且服务器需要支持SSL,我们选用tomcat5.0.284.在Server1所运行的jvm里,产生Server1的证书命令:keytool-genkey-aliasmy-alias-name-keyalgRSA-keystorekeystore-file注意:测试时在名字中输入Server1的IP地址或机器名(casserver和casclient在同一台机器可使用localhost)5)在Server1配置tomcat使用HTTPS,$CATALINA_HOME/conf/server.xml里加入以下的配置:ConnectorclassName=org.apache.coyote.tomcat5.CoyoteConnectorport=8443minProcessors=5maxProcessors=75enableLookups=truedisableUploadTimeout=trueacceptCount=100debug=0scheme=httpssecure=trueFactoryclassName=org.apache.coyote.tomcat5.CoyoteServerSocketFactorykeystoreFile=/path/to/your/keystore-filekeystorePass=your-passwordclientAuth=falseprotocol=TLS//Connector6)导出Server1的证书,用来给所有需要用到的客户端导入,可使用:命令:keytool-export-filemyserver.cert-aliasmy-alias-name-keystorekeystore-file7)在要使用CAS的客户端Client1里设置,测试可以使用ServletFilter(CASclient里提供的)来实现SSO的检查。Client1可使用tomcat5.0.28。配置CASClient应用中的/WEB-INF/web.xml如下:注意蓝笔画的地方。://192.168.210.80:8443/cas/proxyValidate是服务器端的192.168.210.123:8080是客户端的filterfilter-nameCASFilter/filter-namefilter-classedu.yale.its.tp.cas.client.filter.CASFilter/filter-classinit-paramparam-nameedu.yale.its.tp.cas.client.filter.loginUrl/param-nameparam-value

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功