CAS in Action(cas-server-3.3.4 + cas-client-3.1.3)
纠结了2天,终于把CAS的第一个例子搭起来了…网上找了N多文档,都不太适用,特别是在client的配置方面…因为我用的是 3.1.3的,网上大部分是2.X版本的…以前的老版本是耶鲁实验室开发的,但是3.X后(具体啥版本开始我也不清楚…)是由jasig开发的,代码结构完全变了…
下面发一些我的配置方式,server的配置网上基本都有,但是为了文档的完整性,免得大家到处找,我就粘过来吧,把2.x的配置方式也粘过来.废话不多说了,开始正文:
相关的jar包可以在www.apache.org www.jasig.org www.springsource.org上找到
http://blog.csdn.net/cxy1238/archive/2009/10/11/4653345.aspx 这个是我当时参考的文章,上面有一些中文乱码的解决方案(我还没试过…),更改数据源及密码加密方式,下面我也会讲到我的代码,文章中用的是MD5
CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:
-
开源的企业级单点登录解决方案。
-
CAS Server 为需要独立部署的 Web 应用。
-
CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
CAS 原理和协议
从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:
图 1. CAS 基础协议
CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,与 CAS Server 进行身份核实,以确保 Service Ticket 的合法性。
在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。
CAS架设环境
Windows
Tomcat 6.x
JDK 1.6
CAS server 3.34
cas-client-2.0.11(是耶鲁大学的那个版本,不是最新版,3.1.3的配置方式在后面讲解)
配置CAS服务端
部署cas-server
下载最新的cas-server-3.3.4.zip 服务器端,解压后找到cas-server-webapp.war,将这个war进行解压到tomcat的webapps目录下.
将刚才解压出的目录cas-server-webapp进行重命名为cas
启动tomcat 输入http://localhost:8080/cas/login 查看是否成功部署
下载地址: http://www.jasig.org/
推荐环境:JDK1.6 tomcat 6.0
配置数据源和身份验证
用户的认证信息通常保存在数据库中,我们这里使用的是jtds数据库连接。
将前面下载的cas-server-3.3.4.zip 包解开后,在 modules 目录下可以找到包cas-server-support-jdbc-3.3.4.jar,再下载个jtds的jar包,将两个包拷贝到cas\WEB-INF\lib目录下
DataStore 依赖于 spring.jar, commons-collections.jar, commons-dbcp.jar, commons-pool.jar
在apache和spring官方网找到这四个包把它们拷贝到cas\WEB-INF\lib下
在 cas-server-support-jdbc-3.3.4.jar包中,提供了 3 个基于 JDBC 的 AuthenticationHandler,分别为 BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler
我们这里使用的是QueryDatabaseAuthenticationHandler,它是通过配置一个 SQL 语句查出密码,与所给密码匹配
根据密码加密方式的不同,我们需要实现PasswordEncoder接口,来对输入的密码进行加密才能与数据库中的密码比较
建立一个项目,导入cas-server-core-3.3.4.jar包
在项目中写个类实现org.jasig.cas.authentication.handler.PasswordEncoder接口中的public String encode(String arg0)方法,这是用来输入的密码加密的。
项目导出成jar包,拷贝到cas\WEB-INF\lib下
根据不同的密码加密方式实现,我这里是SHA加密,下文仅为参考,请根据需求变化
新建个caspasskey项目,包名随便…我这有2个类,DigestUtil是加密算法的实现类,CASPasswordEncoder是我们要重写的CAS加密类
源码为:
分享到:
相关推荐
总的来说,"rabbitmq-java-client-bin-3.3.4"是一个强大的工具,它为Java开发者提供了直接与RabbitMQ服务器通信的能力,使得构建可靠、高效的消息传递系统变得简单。通过深入理解和熟练运用这个客户端,开发者可以...
【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | ...一、下载 Hadoop 二、解压 Hadoop 三、设置 Hadoop 环境变量 四、配置 Hadoop 环境脚本 五、安装 winutils 六、重启电脑 七、验证 Hadoop 安装效果
在"rabbitmq-java-client-bin-3.3.4.zip"这个压缩包中,包含的是RabbitMQ的Java客户端库,这是与RabbitMQ服务器通信的一个关键组件。RabbitMQ提供了多种语言的客户端,Java客户端则是针对Java开发者设计的,使得Java...
Qt.for.Windows.3.3.4.商业版.qt-win-commercial-3.3.4.exe
行业教育软件-学习软件-vipkid英语 3.3.4.zip
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
Qt 3.3.4则是 Trolltech 公司(现为The Qt Company)推出的一个用于图形用户界面开发的跨平台框架。Qt允许开发者用C++语言编写一次代码,即可在多个操作系统上运行,包括Windows、Linux、Mac OS等。版本3.3.4虽已...
CAS(Central Authentication Service)是一种广泛使用的开放源代码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在本文中,我们将深入探讨如何使用和理解"cas客户端jar包"。 ...
Python matplotlib包 pip install matplotlib-3.1.3-cp37-cp37m-macosx_10_9_x86_64.whl
官方版本,亲测可用
官方版本,亲测可用
Apache Commons Lang 是一个Java工具包,它为Java开发人员提供了许多实用程序类,这些类在Java标准库中并未提供。这个“commons-lang3-3.4-src”是Apache Commons Lang库的3.4版本的源代码,对于学习和理解这个库的...
Apache Hadoop (hadoop-3.3.4.tar.gz)项目为可靠、可扩展的分布式计算开发开源软件。官网下载速度非常缓慢,因此将hadoop-3.3.4 版本放在这里,欢迎大家来下载使用! Hadoop 架构是一个开源的、基于 Java 的编程...
现(20181020)Qt已升级到5.11,基本不会在有基于Qt3的新开发,但可能仍有老...包中有Qt3.3.4版windows商业版安装程序和许可证。安装时使用许可证会提示已经过期,不能获得Trolltech[狗头]的更新和支持,直接确定即可。
官方离线安装包,亲测可用
《美年大健康app v3.3.4:健康管理的新里程》 美年大健康app是一款专注于健康医疗领域的安卓应用程序,旨在为用户提供全方位的健康管理服务。版本号v3.3.4代表了软件在功能优化和用户体验上的进一步提升,使得这款...
标题 "e1000e-3.3.4.tar.gz" 指的是一个Linux系统中的设备驱动程序包,具体来说是针对Intel E1000系列网络接口控制器的e1000e驱动程序的版本3.3.4。这个文件是一个经过gzip压缩的tar归档文件,常见于Linux环境中,...
《美年大健康app v3.3.4 安卓版》是一款专为安卓用户设计的健康管理软件,致力于提供全面的健康服务。该版本为3.3.4,集成了多项改进和优化,旨在提升用户体验并增强功能实用性。在这款应用中,用户可以享受到以下...