CAS开发手册

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

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

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

资源描述

CAS开发手册第一章引言水利厅门户网站由一个主系统和多个子系统构成,为了避免用户在使用各个系统时重复登录,项目引进了SSO(SingleSignOn,单点登录)的概念,采用CAS(CentralAuthenticationService,中央认证服务)技术,以求给用户更好的体验。1.编写目的为了让开发人员更好的掌握CAS技术及其使用方法,实现单点登录的功能,特编写此文档。2.背景SSO是目前比较流行的企业业务整合的解决方案之一,它定义在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS是Yale(耶鲁)大学发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法,在2004年12月正式成为JA-SIG的一个项目。目前,也已经有许多应用CAS实现单点登录的成功案例。第二章CAS简介CAS是一款不错的针对Web应用的单点登录框架,具有以下特点:开源的企业级单点登录解决方案。CASServer为需要独立部署的Web应用。CASClient支持非常多的客户端(这里指单点登录系统中的各个Web应用),包括Java,.Net,PHP,Perl,Apache,uPortal,Ruby等。从结构上看,CAS包含两个部分:CASServer和CASClient。CASServer需要独立部署,主要负责对用户的认证工作;CASClient负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CASServer。图1是CAS最基本的协议过程:图1.CAS基础协议CASClient与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源。对于访问受保护资源的每个Web请求,CASClient会分析该请求的HTTP请求中是否包含ServiceTicket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CASServer登录地址,并传递Service(也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第3步中输入认证信息,如果登录成功,CASServer随机产生一个相当长度、唯一、不可伪造的ServiceTicket,并缓存以待将来验证,之后系统自动重定向到Service所在地址,并为客户端浏览器设置一个TicketGrantedCookie(TGC),CASClient在拿到Service和新产生的Ticket过后,在第5,6步中与CASServer进行身份合适,以确保ServiceTicket的合法性。在该协议中,所有与CAS的交互均采用SSL(SecureSocketsLayer,安全套接层)协议,确保ST和TGC的安全性。协议工作过程中会有2次重定向的过程,但是CASClient与CASServer之间进行Ticket验证的过程对于用户是透明的。另外,CAS协议中还提供了Proxy(代理)模式,以适应更加高级、复杂的应用场景,具体介绍可参照CAS官方网站。第三章搭建环境1.准备工作下载必须的软件:JDK下载地址:下载地址:下载地址:下载地址:由于原有的Tomcat可能要用于其它项目的开发,故建议重新配置一个单独的Tomcat环境供CAS使用。配置Tomcat的过程请参照其它网站。本文档的环境:Tomcat6.0.29JDK6CASServer版本:cas-server-3.4.3.1、cas-server-3.4.3.10CASClient版本:cas-client-3.1.12、cas-client-3.2.12.Tomcat安装SSL在以上描述中,可知所有与CAS的交互均采用SSL协议,故要实现CASSSO必须先要让Tomcat支持SSL,配置SSL共有四个步骤,下面逐一进行描述。2.1生成Keystore证书是单点登录认证系统中很重要的一把钥匙,客户端于服务器的交互安全靠的就是证书。在此,主要讲解用JDK自带的keytool工具生成证书。进入命令提示符,输入以下指令:keytool-genkey-aliaswsria-keyalgRSA-keystored:/keys/wsriakey参数介绍:-alias密钥的别名-keyalg密钥使用的加密算法,此处使用RSA-keystore密钥存储的位置,默认是存在用户主目录下,此处则指定存储位置更多关于keytool的参数说明请参考《JDKkeytool参数说明》此条命令的意思就是在目录d:/keys/wsriakey下,使用RSA加密算法生成一个别名为wsria的gevinme.keystore,生成keystore的过程如图2所示:图2.生成Keystore输入域名时所输入的sso.wsria.com是虚拟的,实际是不存在的,技巧在于修改文件C:\Windows\System32\drivers\etc\hosts,添加如下内容:127.0.0.1sso.wsria.com这样在访问sso.wsria.com的时候其实就是访问的127.0.0.1,也就是本机。注:第一个问不能输入IP地址,一定要填写CASServer的域名,否则到时访问客户端程序时将会报以下的错误:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:Nonamematchingxxx.xxx.xxfound2.2导出证书进入命令提示符,输入以下指令:keytool-export-filed:/keys/wsria.crt-aliaswsria-keystored:/keys/wsriakey按回车键输入密码,效果如图3所示。图3.导出证书至此,导出证书的工作就已经顺利完成,可以分发给应用的JDK使用了。2.3客户端导入证书在运行客户端程序的机器上导入证书,需要注意的是此处导入的jre必须是Tomcat指向的jre(D:\tools\jdk\1.6\jdk1.6.0_20\jre\lib\security--是jre的目录),在命令提示符下输入如下指令:keytool-import-keystoreD:\tooos\jdk\1.6\\jdk1.6.0_20\jre\lib\security\cacerts-fileD:/keys/wsria.crt-aliaswsria按回车键根据提示完成后面的操作,效果如图4所示。图4.客户端导入证书2.4应用证书到Web服务器Tomcat打开tomcat目录的conf/server.xml文件,开启83和87放得注释代码,并设置keystoreFile、keystorePass修改结果如下:connectorport=8443protocol=HTTP/1.1sslenabled=truemaxthreads=150scheme=httpssecure=trueclientauth=falsesslprotocol=TLSkeystorefile=D:/keys/wsriakeykeystorepass=wsria.com/connector其中:keystoreFile:在第一步创建的key存放位置keystorePass:创建证书时的密码至此,Tomcat的SSL启用完成,启动tomcat进行测试,输入地址:,测试效果如图5所示,点击“继续浏览此网站”,进入Tomcat目录。图5.测试SSL启用效果3.CASSSO的简单实现本章主要介绍如何搭建CASServer服务端程序和客户端程序,实现访问一个客户端程序的授权页面后跳转到CAS认证系统中验证,验证成功后访问另外一个客户端程序的授权页面时无需输入用户名和密码。3.1搭建CASServer将cas-server-3.4.3/modules/cas-server-webapp-3.4.3.1.war改名为cas.war,然后复制cas目录到tomcat/webapp目录下。启动Tomcat,访问,如出现如图6所示的页面,则表示搭建成功。图6.CASServer搭建成功界面输入正确的用户名和密码(CAS默认的验证规则只要用户名和密码相同就通过)之后,出现如图7所示的界面。图7.CASServer成功登陆页面3.2配置CAS客户端在Eclipse中的结构如图8所示,两个程序结构一样,内容也差不多,其中protected/success.jsp是授权页面,需登录后才能访问。public.jsp页面是公共页面,无需验证。需要加入的jar包有五个,见图8。图8.CAS客户端结构图web.xml文件中的内容为:?xmlversion=1.0encoding=UTF-8?web-appxmlns:xsi==:web=:schemaLocation=://java.sun.com/xml/ns/javaee/web-app_2_5.xsdid=WebApp_IDversion=2.5display-nameclientA/display-namefilterfilter-nameCASAuthenticationFilter/filter-namefilter-classorg.jasig.cas.client.authentication.AuthenticationFilter/filter-classinit-paramparam-namecasServerLoginUrl/param-nameparam-value://client.gevin.me/param-value/init-paraminit-paramparam-namerenew/param-nameparam-valuefalse/param-value/init-paraminit-paramparam-namegateway/param-nameparam-valuefalse/param-value/init-param/filterfilterfilter-nameCASValidationFilter/filter-namefilter-classorg.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter/filter-classinit-paramparam-namecasServerUrlPrefix/param-nameparam-value

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

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

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

×
保存成功