`

CAS 配置(基于tomcat 6)

 
阅读更多

需要包资源:

a)        cas-server-3.3.5-release

b)        apache-tomcat-6.0.24-windows-x86.zip

c)        cas-client-2.0.11.zip ,后面我用了CAS-CLIENT-3.1.3版本,支持登出功能

 

第一步:配置CAS服务器环境

1,在企业内部网内该预备cas服务器主机中搜索hosts文本文件,添加域名映射对 ip  

  Lin(这里是我的主机名称,就是完整计算机名称,改下就可,不改就用localhost
2
,再客户主机中搜索hosts文本文件,添加相应cas服务器域名映射信息
3
,部署CAS3服务器端所需得ssl环境生成

预备生成文件: cacerts server.keystore client.keystore 
    server.cer client.cer

生成服务器端库文件 (生成的时候,第一项name一定要写你的完整计算机名称,我的是lin)
keytool -genkey -alias tomcat-server -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore

导出服务器端证书
keytool -export -alias tomcat-server -storepass changeit -file server.cer -keystore server.keystore 
生成客户端库文件
keytool -genkey -alias tomcat-client -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore 
导出客户端证书
keytool -export -alias tomcat-client -storepass changeit -file client.cer -keystore client.keystore

导入服务器端证书
keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit 
导入客户端证书
keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit

4将如上生成得cacerts server.keystore client.keystore 
    server.cer client.cer
文件分别拷贝到cas服务器以及应用客户端TOMCAT_HOME主目录以及JAVA_HOEM/jre/lib/security文件下(每个子系统的tomcat也要拷贝进去)

解压下载的CAS SERVER 包,找到/cas-server-3.3.5-release/cas-server-3.3.5/modules下的cas-server-webapp-3.3.5.war,更名为cas3.war,拷贝到TOMCAT webapp目录下,tomcat启动时,会自动解压。

 

配置好JDK1.6CMD命令JAVA –version 要是配置的JDK版本,否则没配置好),部署好TOMCAT

这里就不多说了,再来部署CAS SERVER

 

先配置服务端TOMCAT SSL: 主题:Tomcat SSL配置大全

       先解压一个TOMCAT6,我是到C/Program Files/目录下;进入tomcat目录的conf目录下,编辑server.xml,

找到(默认的端口号不用改)

<!--<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />à

去掉注释,这段段代码替换成:

       <Connector protocol="org.apache.coyote.http11.Http11NioProtocol"  

           port="8443" minSpareThreads="5" maxSpareThreads="75"  

           enableLookups="true" disableUploadTimeout="true"    

           acceptCount="100"  maxThreads="200"  

           scheme="https" secure="true" SSLEnabled="true"  

           clientAuth="false" sslProtocol="TLS"  

           keystoreFile="C:/Program Files/apache-tomcat-6.0.24/server.keystore"    

           keystorePass="changeit"/>  

运行:https://lin:8443/,出现tomcat的首页,则说明cas服务端配置成功。

主机名称和ip映射修改,找到C:/WINDOWS/SYSTEM32/DRIVERS/ECT/HOST 文件,增加

IP(主机IP hostname(主机名)

第二步:配置CAS客户端环境

再解压一个tomcat6,放在D盘,更名为casclient,这里因为在同一台电脑上,所以要更改端口号:

<Server port="8006" shutdown="SHUTDOWN">!—修改1 --

<Connector port="9090"

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" redirectPort="8080" acceptCount="100"

               debug="0" connectionTimeout="20000"

               disableUploadTimeout="true" /> !—修改2 --

当然,证书文件都要拷贝到这个目录的根目录下。


再客户端应用程序得web.xml文件中加入如下:(CAS-CLIENT 2.0.11版本,当然下载后的cas-client-java-2.0.11包或者cas-client-java-3.0.0包也要解压,找到BIN下的CORE文件,拷贝到客户端系统的lib目录下)

 

 

------------------------------------客户端配置(1------------------------------------

<!-- CAS Filters -->
 <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://lin:8443/cas3/login</param-value>
  </init-param><!--
这里的server是服务端的
IP-->
  <init-param>
   <param-name>
    edu.yale.its.tp.cas.client.filter.validateUrl
   </param-name>
   <param-value>
    https://lin:8443/cas3/proxyValidate
   </param-value>
  </init-param><!--
这里的serName是服务端的主机名,而且必须是
-->
  <init-param>
   <param-name>
    edu.yale.its.tp.cas.client.filter.serverName
   </param-name>
   <param-value>lin:8080</param-value><!--client:port
就是需要CAS需要拦截的地址和端口,一般就是这个TOMCAT所启动的IP
port-->
  </init-param>
 </filter>

 <filter-mapping>
  <filter-name>CASFilter</filter-name>
  <url-pattern>/secure/*</url-pattern><!--
这里的设置是针对servlets-examples的,针对jsp-examples设置为
/* -->
 </filter-mapping>

------------------------------配置(1)结束-------------------------------------------

-----------------------------------------以上的web.xml配置是客户端2.0.11版本,不支持登出功能---------------------------

 

-----------------------------------------下面的web.xml配置是客户端3.3.版本,支持登出功能-----------------------------------

 

<!-- CAS -->

    <!-- 单点登出 -->

      <filter>

        <filter-name>CAS Single Sign Out Filter</filter-name>

        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

    </filter>

     <filter-mapping>

        <filter-name>CAS Single Sign Out Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>   

    <listener>

    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

    </listener> 

<!--单点登录 -->

<filter>

<filter-name>CAS Authentication Filter</filter-name>       

<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>

        <!-- CAS login 服务地址-->

        <init-param>

            <param-name>casServerLoginUrl</param-name>

            <param-value>https://lin:8443/cas3/login</param-value>

        </init-param>

        <init-param>

            <param-name>renew</param-name>

            <param-value>false</param-value>

        </init-param>

        <init-param>

            <param-name>gateway</param-name>

            <param-value>false</param-value>

        </init-param>

        <!-- 客户端应用服务地址-->

        <init-param>

            <param-name>serverName</param-name>

            <param-value>http://lin:8999</param-value>

        </init-param>

</filter>

 

    <!--负责Ticket校验-->

<filter>

<filter-name>CAS Validation Filter</filter-name>        

<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>

        <init-param>

            <param-name>casServerUrlPrefix</param-name>

            <!—下面一定要是主机名称(客户端主机要添加服务器主机名称与服务器的IP映射,在host文件中添加),其他的可以用IP(我遇到了这样的问题)casserver产生密钥的时候输入的"姓名(CN)",并且要有这个域名,或者hosts文件中要有定义 -->

            <param-value>https://lin:8443/cas3</param-value>

        </init-param>

        <init-param>

           <param-name>serverName</param-name>

           <param-value>http://lin:8999</param-value><!—这里写客户端的端口号 -->

       </init-param>

       <init-param>

           <param-name>useSession</param-name>

           <param-value>true</param-value>

       </init-param>

       <init-param>

           <param-name>redirectAfterValidation</param-name>

           <param-value>true</param-value>

       </init-param>       

</filter>

  

<filter>

    <filter-name>CAS HttpServletRequest WrapperFilter</filter-name>

    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>

</filter>

  

<filter>

    <filter-name>CAS Assertion Thread Local Filter</filter-name>

    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>

</filter>

 

    <filter-mapping>

       <filter-name>CAS Authentication Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

  

    <filter-mapping>

        <filter-name>CAS Validation Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>  

  

    <filter-mapping>

        <filter-name>CAS HttpServletRequest WrapperFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

  

    <filter-mapping>

        <filter-name>CAS Assertion Thread Local Filter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

     <!-- END CAS -->

 

---------------------------------客户端配置(2)---------------------------------------

 

 

 

 

第三步:定制自己的身份登录密码

在服务端tomcat中,找到webapps/cas3/中的deployerConfigContext.xml,编辑:

 

找到

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

这是CAS默认身份认证,只要用户名和密码相同就可以登录,注释掉<!-- à,定制自己的认证,替换成

  <!--下面是数据库配置-->

 

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">

                                  <property name="dataSource" ref="casDataSource" />

                                 <property name="sql" value="select passwd from market.sys_phone_login@ncdata  where phone_id = ?" />

                                 <!--<property name="passwordEncoder"  ref="myPasswordEncoder"/> -->

                       </bean>

                     </list>

              </property>

       </bean>

<bean id="casDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">

    <property name="driverClassName">

        <value>oracle.jdbc.driver.OracleDriver</value>

    </property>

    <property name="url">

        <value>jdbc:oracle:thin:@10.175.183.118:1521:info</value>

    </property>

    <property name="username">

        <value>prm</value>

    </property>

    <property name="password">

        <value>prm</value>

    </property>

</bean>

       <bean id="myPasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">

    <constructor-arg value="MD5"/>

</bean>

 

同时要把链接自己数据库的ORACLE JAR包资源等,放入项目的LIB目录下。

 

 

第四步:UI DIY设计

提示:获取用户信息

<%String user=(String)session.getAttribute("CASFilter.CAS_FILTER_USER");%>//2.0.11版本

    //HttpServletRequest request = ServletActionContext.getRequest();  

<%  AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal();  

    String username = principal.getName();   //3.3版本

    //Long orgnId = Long.parseLong(principal.getAttributes().get("orgnId").toString());

%>

 

 

遇到的问题:

1

由于cas的证书需要域名才能正确的进行认证信息的交互,不支持ip,如果serverclient在同一台机器上,可以使用localhost,如果像我们上面描述的三台服务器这样的环境,使用localhost或者ip是不能正常运行的。如果使用ip,运行时会抛出 HTTPS hostname wrong,如果客户端CAS过滤器没配好会返回no response的错误。

解决的方法如下:

   假设server1ip为:192.168.10.1client1ip192.168.10.2,开发机器(xp)ip为:192.168.10.3

server1client1上设置本机的域名映射:

vi /etc/hosts 添加以下行

192.168.10.1 cas.server cas服务器所在的主机要加这个映射,同时客户机服务器主机要加上cas服务器名称和地址的映射,这很重要,不过这是针对HTTPS方式认证)

在开发机器(xp)下,在C:/WINDOWS/system32/drivers/etc目录下,编辑hosts文件,添加以下行

192.168.10.1 cas.server

 重新生成cas-sever的服务器端的证书,在开始问“你的名字”或“DName”的时候,必须填写你服务器所在域名(cas.server

然后重新到处服务器器端的证书,并将其导入到client1服务器的jvm

 最后修改servlets-examples/WEB-INF/web.xml中关于cas过滤器的配置:

请将your.cas.server.name(eg:server1)修改为cas.server即可。重新启动server1client1的服务器上的tomcat就可正常运行。

 ttp://client1:8080/servlets-examples/servlet/HelloWorldExample

系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,验证通过之后就会访问

到真正的HelloWorldExample这个servlet

2)取消cas服务器HTTPS认证,去除浏览器的警告,也就是用http认证(降低安全性)

 

Cas服务器用cas-server-3.3.1-release.zipcas客户端用cas-client-3.1.3-release.zip,他们的配置我就不说了,上面都有详细说明。

A.服务器端更改:

配置文件: $WebRoot/WEB-INF/sprint-configuration/ticketGrantingTicketCookieGenerator.xml  

  1. <bean id="ticketGrantingTicketCookieGenerator"    
  2.       class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"  
  3.         p:cookieSecure="true" <!-- 就是这东西在作怪,改成falseOK -->  
  4.         p:cookieMaxAge="-1" <!-- 这个不讨论 -->  
  5.         p:cookieName="CASTGC" <!-- 这个也不讨论 -->  
  6.         p:cookiePath="/cas" <!-- 这个有等于没有,为什么?看下面 -->  
  7. /> 

服务器修改完成。

 

B.客户端修改

还记得我们上面说的在客户端web.xmlcas服务器过滤器中,用到的是https://lin:8443/cas3/login之类的,现在我们要将这中服务端的连接改成:http://lin:8080/cas3/login这种方式,因为我们要用http来传递ST,注意cas服务器的http端口号我本机上是8080,这个看自己有没有改,如果改了这里也要改。(开始我就是这里没改成cas服务器的http端口,而只是把https改成http,一直报错,所以这是需要注意)

分享到:
评论

相关推荐

    基于Tomcat6的CAS SSO配置

    本文档主要根据自己的实际工作而编写的,部分来源于网络

    基于cas的sso 单点登录tomcat配置过程

    压缩包中有详细的cas sso 的配置过程,同时提供所需的全部JAR包!

    落雨博客基于CAS框架的单点登录技术讲解(ppt+code实例+doc)配套资料

    [置顶] SSO单点登录系列3:cas-server端配置认证方式实践(数据源+自定义java类认证) http://blog.csdn.net/ae6623/article/details/8851801 [置顶] SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas...

    cas4.0单点登录开箱即用带tomcat

    基于CAS4.0.0版本的单点登录,自带tomcat8,已配置SSL,只需要在本地创建一个cas.keystore证书放在D盘下就可以运行了。证书名称跟密码可自行修改或参照本tomcat。登录页面的logo与背景图已预留,替换即可

    cas-5.0.6.zip

    cas 单点登录 据演示需求,用修改hosts 文件的方法添加域名最简单方便(这个非常重要,因为CAS单点登录系统是基于JAVA安全证书的 https 访问, 要使用CAS单点登录必须要配置域名, cas是不能通过ip访问的.),编辑...

    基于Tomcat 数据源的原理、配置、使用介绍

    1、加载数据库驱动程序,数据库驱动程序通过CLASSPATH配置; 2、通过DriverManager类取得数据库连接对象; 3、通过Connection实例化PreparedStatement对象,编写SQL命令操作数据库; 4、数据库属于资源操作,操作...

    myprofile:型材乔治

    因此,它提出了以下主要假设: 一台机器,如所述,基于“ 3Tomcat”的设置, 已配置为绑定到本地主机上的端口8180(代理/ cas),8280(所有其他webapp),8380(geoserver)的tomcat连接器, HTTP方案是主要方案...

    spring security 参考手册中文版

    6.安全命名空间配置 47 6.1简介 47 6.1.1命名空间的设计 49 6.2安全命名空间配置入门 50 6.2.1 web.xml配置 50 6.2.2最小的配置 50 6.2.3表单和基本登录选项 52 设置默认的登录目的地 54 6.2.4注销处理 54 6.2.5使用...

    阿里云javasdk源码-pinyougou-sys:本系统是一个综合性好的商城项目

    基于SSM+maven+tomcat7+redis+solr+cas+bootstrap+AngularJS技术实现。 项目结构 SSM-pinyougou ├──LOG 日志 │ ├─ssm.log ├──resource 配置文件 │ ├─mappers 映射文件 │ ├─*mappers 实体类对应的映射...

    Spring Security 中文教程.pdf

    23.3. 为tomcat配置SSL 24. 替换验证身份 24.1. 概述 24.2. 配置 A. 安全数据库表结构 A.1. User表 A.1.1. 组权限 A.2. 持久登陆(Remember-Me)表 A.3. ACL表 A.3.1. Hypersonic SQL A.3.1.1. ...

    SpringSecurity 3.0.1.RELEASE.CHM

    22.3. 为tomcat配置SSL 23. 替换验证身份 23.1. 概述 23.2. 配置 A. 安全数据库表结构 A.1. User表 A.1.1. 组权限 A.2. 持久登陆(Remember-Me)表 A.3. ACL表 A.3.1. Hypersonic SQL A.3.1.1. PostgreSQL...

    MaxKey单点登录认证系统-其他

    7、基于Java平台开发,采用Spring、MySQL、Tomcat、Apache Kafka、Redis等开源技术,支持微服务,扩展性强。 8、许可证 Apache License, Version 2.0,开源免费。     MaxKey单点登录认证系统 更新日志: v2.7.0 ...

    Spring Security-3.0.1中文官方文档(翻译版)

    23.3. 为tomcat 配置SSL 24. 替换验证身份 24.1. 概述 24.2. 配置 A. 安全数据库表结构 A.1. User 表 A.1.1. 组权限 A.2. 持久登陆(Remember-Me)表 A.3. ACL 表 A.3.1. Hypersonic SQL A....

    【MaxKey单点登录认证系统 v2.4.0 RC】企业级IAM身份管理和身份认证产品+RBAC权限管理.zip

    7、基于Java平台开发,采用Spring、MySQL、Tomcat、Apache Kafka、Redis等开源技术,支持微服务,扩展性强。 8、许可证 Apache License, Version 2.0,开源免费。 源码更新日志: MaxKey单点登录认证系统 更新v...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    tomcat resin jetty 容灾 日志框架 开源框架 slf4j 框架实现 log4j logback commong logging jdk logger 测试框架 测试框架 junit easymock testng mockito bug管理 禅道 jira 开发工具 编程...

    java开源包6

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    JAVA上百实例源码以及开源项目源代码

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    JAVA上百实例源码以及开源项目

    6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...

    java开源包1

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

    java开源包11

    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司...

Global site tag (gtag.js) - Google Analytics