SSO和CAS
单点登录(SingleSign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
CAS是中央认证服务Central Authentication Service的简称,是对单点登录SSO(Single Sign On)的一种实现。最初由耶鲁大学的Shawn Bayern 开发,后由Jasig社区维护,经过十多年发展,目前已成为影响最大、广泛使用的、基于Java实现的、开源SSO解决方案。CAS由Cas Server和Cas Client两部分组成,Cas Server是核心,而Cas Client通常就对应于我们的应用。一个Cas Server可以对应于多个Cas Client。它允许我们在一个Client进行登录以后无需再让用户输入用户名和密码进行认证即可访问其它Client应用。
准备工作
安装JDK和Tomcat:
已经配置好Tomcat的可以跳过此步骤,未安装配置的可以参考另外一篇博客:CentOS6.5中Tomcat的安装配置
启用HTTPS传输协议
(1) 生成证书
注: 名字与姓氏一项需输入域名。
(2) 导出证书文件:
(3) 将证书tomcat.crt导入到JVM中
(4) tomcat中配置https传输
在tomcat下找到/conf/server.xml
,默认tomcat是没有打开https的:
(5) 配置域名
在测试环境中,为了能使用域名https://www.jiangyayu.com 访问CAS服务器,需要简单配置一下客户端的hosts
文件,在hosts
文件末添加:
(6) 启动tomcat,在客户端访问:https://www.jiangyayu.com
浏览器给出警告:
选择高级->继续前往,则通过HTTPS加密协议访问到tomcat的主页:
配置CAS服务器
(1) CAS服务器端配置
CAS服务端下载:https://developer.jasig.org/cas/
下载完成后将cas-server-4.0.0-release.zip
解压,解压cas-server-4.0.0-release/modules/cas-server-webapp-4.0.0.war
,改名为cas.war
,然后复制cas目录到你的tomcat/webapp
目录下。
(2) 访问CAS应用
https://www.jiangyayu.com/cas
打开了CAS服务器的页面输入账户/密码:casuser/Mellon
注:cas4.0后默认的密码验证不是简单的相同了。在配置文件里, 默认是 casuser:Mellon。
配置应用服务器
(1)配置环境
再应用服务器上安装配置好JDK、Tomcat,并启用HTTPS传输协议,并在客户端hosts
文件中为客户端服务器指定域名:
(2) 部署客户端webapp
此处使用Tomcat自带的examples
。进入Tomcat安装目录下的webapp
文件夹,将其中的examples
文件夹复制一份并重命名为test
。
(3) 下载cas-client-3.3.3-release.zip
。
(4) 添加所需jar
进入test
文件夹,删除WEB-INF/lib
中的所有jar包。解压cas-client-3.3.3-release.zip
,将modules
中的所有jar文件复制到WEB-INF
中。
(5) 修改WEB-INF/web.xml
,添加以下内容:
(6) 重启Tomcat
(7) 测试
打开客户机浏览器,访问:
https://www.app1.com/test
跳转到地址:
https://www.jiangyayu.com/cas/login?service=https%3A%2F%2Fwww.app1.com%2Ftest%2F
输入CAS的用户/密码(casuser/Mellon),跳转回访问界面:
表示CAS验证通过。此时新建标签页,再次访问https://www.app1.com/test/ ,发现无需再次验证可以直接访问:
通过数据库中的用户密码认证
(1) mysql中创建用户数据库
创建用于存放用户数据的数据库:
(2) 创建用户表
(3) 创建用户表
向表中插入以下数据:
注:密码以MD5 加密后存放数据库中为例
“111111”的MD5值为:“96e79218965eb72c92a549dd5a330112”
(4) 修改cas服务端配置
在%tomcat_cas%/webapps/cas/WEB_INF/deployerConfigContext.xml
找到如下信息:
修改成如下:
同时增加datasource和加密处理两个bean的定义:
(5) 添加相关的jar包
需要在cas的web项目lib文件夹下添加两个包:cas-server-support-jdbc-x.x.x.jar
和 mysql-connector-java-x.x.x-bin.jar
。
(6) 访问CAS主页
通过账号密码:admin/111111访问CAS主页 通过验证