CAS在tomcat6.0.18下的SSO
(一)CAS实现原理
术语:
CAS(Central Authentication Service)
TGT(Ticket Granting Ticket)
ST(Service Ticket)
PGT(Proxy Granting Ticket)
从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:
图 1. CAS 基础协议
复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。
(二)需要介质
1、 客户端介质cas-client-java-2.1.1.zip
2、 服务端介质cas-server-3.3.3-release.zip
3、 Tomcat6.0
4、 JDK6.0
(三)配置步骤
1、安装JDK6.0与tomcat6.0(略)
2、配置Java环境变量和tomcat环境变量
(1) JDK环境变量配置:
如果你的JDK安装在C盘里,如:C:\j2sdk1.4.2_05,那么就在系统变量里(当然也可以在用户变量里)点新建:
变量名:JAVA_HOME
变量值:C:\j2sdk1.4.2_05
再次点新建:
变量名:classpath
变量值:.;%JAVA_HOME%\lib\dt.jar;
并在path里加入 .;%JAVA_HOME%\bin;
测试:
启动:运行cmd
Dos命令下分别输入Java和JavaC后回车
(2) Tomcat环境变量配置:
如果你的Tomcat安装在C盘里,如:F:\Tomcat50(在这里切记一下,安装Tomcat时,在其字母周围
一定不要存在空格,否则最后可能导致配置不成功)
同样,在系统变量里点新建:
变量名:CATALINA_BASE
变量值:C:\apache-tomcat-6.0.18\apache-tomcat-6.0.18
再次新建:
变量名:CATALINA_HOME
变量值:C:\apache-tomcat-6.0.18\apache-tomcat-6.0.18
点击确定后在classpath中加入%CATALINA_HOME%\common\lib\servlet-api.jar;
在path中加入%CATALINA_HOME%\lib;
测试:
进入%CATALINA_HOME%bin
运行startup.bat
(四)配置ssl协议
背景:作为服务机与客户机通信的协议
步骤:
3.1生成keystore
在命令行下使用如下命令:
C:\Documents and Settings\administrator>keytool -genkey -alias mykey -keyalg RSA -keystore server.keystore
输入keystore密码:123456
再次输入新密码:123456
您的名字与姓氏是什么?
[Unknown]: 主机名或者IP最好是做了host映射的主机名
您的组织单位名称是什么?
[Unknown]: capinfo
您的组织名称是什么?
[Unknown]: capinfo
您所在的城市或区域名称是什么?
[Unknown]: beijing
您所在的州或省份名称是什么?
[Unknown]: beijing
该单位的两字母国家代码是什么
[Unknown]: cn
CN=fengqingyu, OU=capinfo software ltd., O=capinfo, L=beijing, ST=beijing, C=cn 正确吗?
[否]: y
输入<mykey>的主密码
(如果和 keystore 密码相同,按回车):
在C:\Documents and Settings\new下可以找到一个文件:server.keystore,其中就包含了自签名的证书。
注意:
这里要求certificate keystore 和certificate的密码一致,此为Tomcat的约束。
如果服务端和应用端在同一台电脑上,还可以使用批处理文件:
@echo off
if "%JAVA_HOME%" == "" goto error
@echo on
@echo off
cls
rem please set the env JAVA_HOME before run this bat file
rem delete alia tomcat if it is existed
keytool -delete -alias tomcatsso -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
keytool -delete -alias tomcatsso -storepass changeit
REM (注释: 清除系统中可能存在的名字为tomcatsso 的同名证书)
rem list all alias in the cacerts
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
REM (注释: 列出系统证书仓库中存在证书名称列表)
rem generator a key
keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=ls" -storepass changeit
REM (注释:指定使用RSA算法,生成别名为tomcatsso的证书,存贮口令为changeit,证书的DN为"cn=linly" ,这个DN必须同当前主机完整名称一致哦,切记!!!)
rem export the key
keytool -export -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -storepass changeit
REM (注释: 从keystore中导出别名为tomcatsso的证书,生成文件tomcatsso.crt)
rem import into trust cacerts
keytool -import -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
REM (注释:将tomcatsso.crt导入jre的可信任证书仓库。注意,安装JDK是有两个jre目录,一个在jdk底下,一个是独立的jre,这里的目录必须同Tomcat使用的jre目录一致,否则后面Tomcat的HTTPS通讯就找不到证书了)
rem list all alias in the cacerts
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
pause
:error
echo 请先设置JAVA_HOME环境变量
:end
3.2添加keystore目录
在%TOMCAT_HOME%目录下新建目录keystore,并拷贝server.keystore到其目录下。
3.3修改配置文件
修改%TOMCAT_HOME%/conf/server.xml文件。添加https的Connector。
<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="conf/.keystore" keystorePass="changeit"
truststoreFile="C:/Program Files/Java/jdk1.6.0_23/jre/lib/security/cacerts"
clientAuth="false" sslProtocol="TLS"/>
注意:
1)keystoreFile指向文件%TOMCAT_HOME%/conf/.keystore文件。
2)keystorePass就是刚才生成certificate keystore的密码。
3)测试Https。访问https://localhost:8443/,提示有不安全的证书,接受证书,看到可亲的tom猫
4)访问的时候localhost最好换成你的主机名。
至此SSL协议配置结束。
4、搭建CAS的服务端
4.1 CAS在tomcat上的发布
1)将下载的cas-server-3.3.3-release.zip解压
2)将解压包内的modules文件夹下的cas-server-webapp-3.3.3.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war
可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。
5、 搭建CAS客户端
1、 配置客户端服务器的HTTPS协议方法同服务端。
2、 客户端的安装
1) 将cas-client-java-2.1.1.zip解压并将\cas-client-java-2.1.1\dist下的casclient.jar拷贝到你所要应用的项目的WEB-INF\lib目录下
2) 将\cas-client-java-2.1.1\lib下的所有包copy到WEB-INF\lib目录下
3、 密钥的交换。
1) 服务端密钥的导出
C:\Documents and Settings\administrator>keytool -export -file client.cert -alias mykey -keystore server.keystore
2)客户端密钥的导入
将导出的client.cert密钥copy到客户端机器上在客户端机器上运行
keytool -import -trustcacerts -file client.cert -keypass changeit -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -alias mykey1
注意:
导入的部位是
JAVA_HOME的jre目录下,不是跟jdk同级的jre目录
例如: C:/Program Files/Java/jdk1.6.0_03/jre/lib/security/cacerts
4、 配置文件的修改
1) 修改webapps\examples\WEB-INF\web.xml,加入servlet filter实现SSO检查。
注:该web.xml为你要加入SSO功能的项目下的web.xml文件,本示例为使用tomcat下自带的example项目
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
<param-value>https://cas02.com.cn:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://cas02.com.cn:8443/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>cas02.com.cn:8080</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:本测试案例的服务端与客户端在同台机器下所以地址栏中全使用了同一主机名,如客户机与服务机在不同机器上,则第一二两个表红色的主机名要换成服务机的主机名,第三个标蓝色的主机名为客户机的主机名。
6、 测试SSO
1)通过IE访问http://主机名:8080后进入TOMCAT页面后选择example会跳转到CAS得登录面输入相同的用户名密码进入example的登录后页面,至此该简单的SSO结束
CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。
在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。
CAS单点登出的设置:
-、在应用页面加入如下标签:
1、登出后重定向登录页面,所以首先在 cas-servlet.xml中加入红色的部分:
<bean id="logoutController" class="org.jasig.cas.web.LogoutController"
p:centralAuthenticationService-ref="centralAuthenticationService"
p:logoutView="casLogoutView"
p:warnCookieGenerator-ref="warnCookieGenerator"
p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"
p:followServiceRedirects="true" />
二、 当应用系统需要设置用户登出的超链接时: 1. 因为使用的是CAS应用系统端的自定义标签,所以首先要把cas.tld文件复制到应用系统的WEB-INF目录下,在web.xml中注册cas.tld文件代码如下: <jsp-config> <taglib> <taglib-uri>cas</taglib-uri> <taglib-location>/WEB-INF/cas.tld</taglib-location> </taglib> </jsp-config> 说明:红色部分修改为WEB-INF目录下存放cas.tld文件的目录。 2. 将logout.jsp文件拷到当前应用系统的工程中(这个jsp页面可以不用通过CAS过滤器),关键代码如下: 例子:<cas:logout var="edu.yale.its.tp.cas.client.filter.user" logoutUrl="https://ssoi.uyunke.com:8443/cas/logout?service=http://my.app.com:8080/testssob/html/test2.jsp" scope="session"/> 代码说明: l 其中红色部分修改为登录当前应用系统的jsp的URL路径; 3. 在要加入登出的地方加入如下代码: <a href="<eaglelink:contextpath/>/html/logout.jsp">登出</a> 代码说明: l <eaglelink:contextpath/>是上下文路径 l 红色部分为上面创建的logout.jsp页面的路径
相关推荐
cas-server & tomcat (springmvc cas maven sso 详解 ) springmvc cas maven sso 详解 http://knight-black-bob.iteye.com/blog/2342088
【标题】"CAS Tomcat整合单点登录Demo"是一个示例项目,展示了如何将CAS(Central Authentication Service)与Tomcat应用程序服务器集成,实现单点登录(Single Sign-On, SSO)的功能。CAS是一种开放源码的身份验证...
**实践操作**:教程详细记录了从创建证书、配置Tomcat启用SSL、到最终部署CAS SSO的全过程,提供了具体的命令行指令和操作步骤,使读者能够跟随教程进行实际操作,从而掌握CAS SSO的部署与管理。 #### 结论:CAS ...
### Liferay 6.1 + CAS 初始化环境搭建及门户解决方案 #### 一、Liferay 6.1 门户介绍 **1.1 简单介绍** Liferay是一款功能强大的开源门户平台,它包含了完整的J2EE应用。该平台不仅支持Web、EJB和JMS等技术,还...
本教程将详细介绍如何搭建CAS服务,并将其与SQL Server数据库和Spring Security进行集成。 首先,搭建CAS服务器是整个流程的基础。CAS服务器负责处理用户的身份验证请求,并在用户成功验证后提供服务票据(Ticket ...
例如,Apache Tomcat可以作为CAS服务器的容器,而Spring Security框架则提供了与CAS集成的支持。此外,CAS还支持多种协议扩展,如SAML、OAuth、OpenID Connect等,以适应不同场景的需求。 **总结** CAS单点登录协议...
在SSO场景中,SpringBoot作为基础框架,提供了快速构建Web应用的便利,同时内嵌Tomcat服务器,使得部署更加简单。 2. **CAS (Central Authentication Service)** CAS是一个开源的身份验证服务,它提供了一种集中式...
CAS(Central Authentication Service,...综上所述,CAS SSO配置涉及到服务器和客户端两部分,需要对Tomcat、SSL证书管理、以及CAS客户端库有深入理解。在实际操作中,务必遵循最佳实践,确保系统的安全性和稳定性。
单点登录(Single Sign-On,简称SSO)是一种身份验证技术,它允许用户在一次登录后,无需再次输入凭证即可...通过深入学习和实践,我们可以利用"cas-server-webapp"来搭建和定制自己的SSO服务,以满足特定的业务需求。
为了更好地理解CAS的工作流程和具体实施步骤,以下将详细介绍如何搭建一套简单的CAS环境: 1. **下载CAS Server与Client** - CAS Server:可以从耶鲁大学提供的官方网站下载最新版本的CAS Server,例如`...
使用CAS框架实现SSO单点登录,其中包含: 1、CAS服务器端安装包 2、客户端源码包和所需的所有jar包 3、CAS+框架+SSO的实现.pdf 5、CAS+SSO实例安装和配置指南PDF版.rar 6、Tomcat中使用Yale+CAS实现单点登陆(SSO)....
搭建基础涉及安装Java开发环境(如JDK 8或更高版本),选择合适的服务器(如Apache Tomcat),以及下载并部署CAS服务器应用到服务器上。 2. **Java客户端程序接入**: CAS 5.x支持Java客户端接入,使得应用程序...
在这个"openjdk11+tomcat9+CASServer.zip"压缩包中,包含了搭建CAS Server 6.3系列所需的基础软件组件,主要涉及三个关键技术:OpenJDK 11、Tomcat 9和CAS Server。 **OpenJDK 11**: OpenJDK是Java Development Kit...
本文将详细介绍CAS的原理、协议以及服务端配置,帮助读者理解并实现CAS SSO系统的搭建。 1. CAS简介 CAS是一款开源的SSO系统,主要功能是为Web应用提供集中式的用户认证。CAS Server作为认证中心独立部署,处理所有...
1. **配置CAS服务器**:首先,你需要搭建一个CAS服务器,这通常涉及到安装和配置CAS服务端应用,如部署CAS服务器的war文件到应用服务器(如Tomcat)。配置包括定义服务提供商(SP)和配置认证服务器的URL等。 2. **...
【描述】"Tomcat+CAS简单实现" 指的是利用Apache Tomcat作为应用服务器,结合CAS服务来构建一个简单的SSO系统。Apache Tomcat是一款流行的开源Java Servlet容器,它能够运行基于Java的Web应用程序。在该场景下,我们...
SSO(Single Sign-on)技术是一种允许...通过以上步骤,我们可以成功地在Tomcat环境中搭建一个基于CAS的SSO系统,实现用户单点登录的需求。SSO技术极大地提高了用户体验,减少了登录次数,同时也简化了系统的安全管理。
总之,“SSO之CAS单点登录详细图文教程.zip”是一个全面的指南,它将引导你通过每一步操作,实现CAS服务端和客户端的集成,最终搭建起一个可靠的SSO系统。在阅读文档和实践操作的过程中,你将深入理解SSO的工作原理...
总的来说,SSO 单点登录通过 CAS 实现,需要正确配置 CAS 服务器与客户端,以及适配不同的认证策略。配置过程涉及到服务器环境搭建、应用部署、XML 配置文件修改和数据库连接设置。理解这些知识点有助于在实际项目中...