cas与tomcat简单搭建SSO

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  其中红色部分修改为登录当前应用系统的jspURL路径;

3.   在要加入登出的地方加入如下代码:

<a href="<eaglelink:contextpath/>/html/logout.jsp">登出</a>

代码说明:

l  <eaglelink:contextpath/>是上下文路径

l  红色部分为上面创建的logout.jsp页面的路径

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值