需要包资源:
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也要拷贝进去)
5 解压下载的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.6(CMD命令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,如果server和client在同一台机器上,可以使用localhost,如果像我们上面描述的三台服务器这样的环境,使用localhost或者ip是不能正常运行的。如果使用ip,运行时会抛出 HTTPS hostname wrong,如果客户端CAS过滤器没配好会返回no response的错误。
解决的方法如下:
假设server1的ip为:192.168.10.1,client1的ip为192.168.10.2,开发机器(xp)的ip为:192.168.10.3
在server1和client1上设置本机的域名映射:
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即可。重新启动server1和client1的服务器上的tomcat就可正常运行。
ttp://client1:8080/servlets-examples/servlet/HelloWorldExample
系统会自动跳转到一个验证页面,随便输入一个相同的账号,密码,验证通过之后就会访问
到真正的HelloWorldExample这个servlet了
(2)取消cas服务器HTTPS认证,去除浏览器的警告,也就是用http认证(降低安全性)
Cas服务器用cas-server-3.3.1-release.zip,cas客户端用cas-client-3.1.3-release.zip,他们的配置我就不说了,上面都有详细说明。
A.服务器端更改:
配置文件: $WebRoot/WEB-INF/sprint-configuration/ticketGrantingTicketCookieGenerator.xml ,
- <bean id="ticketGrantingTicketCookieGenerator"
- class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
- p:cookieSecure="true" <!-- 就是这东西在作怪,改成false就OK了 -->
- p:cookieMaxAge="-1" <!-- 这个不讨论 -->
- p:cookieName="CASTGC" <!-- 这个也不讨论 -->
- p:cookiePath="/cas" <!-- 这个有等于没有,为什么?看下面 -->
- />
服务器修改完成。
B.客户端修改
还记得我们上面说的在客户端web.xml中cas服务器过滤器中,用到的是https://lin:8443/cas3/login之类的,现在我们要将这中服务端的连接改成:http://lin:8080/cas3/login这种方式,因为我们要用http来传递ST,注意cas服务器的http端口号我本机上是8080,这个看自己有没有改,如果改了这里也要改。(开始我就是这里没改成cas服务器的http端口,而只是把https改成http,一直报错,所以这是需要注意)
相关推荐
基于Tomcat6的CAS SSO配置涉及的主要知识点包括SSO(Single Sign-On,单点登录)、CAS(Central Authentication Service,中心认证服务)、SSL(Secure Socket Layer,安全套接层)以及Tomcat服务器的配置。...
6. **集成其他应用**:为了实现SSO,你需要在每个需要使用CasServer的应用系统中配置Cas客户端库,并正确配置CasServer的地址和验证参数。 在压缩包文件列表中提到的"cas"可能指的是CasServer的WAR文件或者解压后的...
通过以上步骤,你将成功地在Tomcat上配置了一个基于CAS的SSO系统,实现了用户一次登录,多处通行的目标。不过需要注意的是,实际部署中可能还需要考虑安全性、性能优化以及与其他系统的集成等问题,因此在生产环境中...
标题“cas单点登录(tomcat)”指的是使用CAS(Central Authentication Service,中央认证服务)实现基于Tomcat服务器的单点登录(Single Sign-On, SSO)功能。CAS是一种开源的身份验证框架,它允许用户通过一个入口点...
在“tomcat集成CAS.doc”文档中,应该详细介绍了在Tomcat服务器上配置和部署CAS客户端的步骤,包括添加CAS服务器的信任证书、配置服务器的context.xml以支持HTTPS以及调整CAS客户端的配置文件。通过阅读这份文档,你...
CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在网络上验证用户身份。它允许用户在访问多个受保护的应用时只需登录一次,从而提高用户体验并简化安全管理。CAS ...
6. **自定义和扩展**: 根据需求,可以进一步定制CAS Server的行为,如编写自定义认证模块、集成新的身份验证源、开发自定义服务验证过滤器等。 总的来说,这个压缩包提供了一个基础的环境来搭建和运行CAS Server ...
《CAS_Tomcat6.doc》可能专注于在Tomcat6上的特定配置,而《使用 CAS 在 Tomcat 中实现单点登录.mht》可能提供了一种更直观的教程形式。 此外,《CAS使用.doc》和《Java Web 应用如何集成cas3.doc》可能涵盖了CAS的...
总的来说,这个压缩包提供了实现基于CAS的Tomcat SSO的完整流程,包括SSL配置和跨域SSO的解决方案。通过阅读和按照这些文档操作,你应该能够成功地在你的Tomcat环境中部署一个安全的单点登录系统。
CAS 是 Jasig 组织开发的一种基于 Web 的单点登录(Single Sign-On,SSO)协议的开源软件。它允许用户通过一次登录一个应用,就能访问其他所有集成 CAS 的应用,无需多次输入认证信息,提高了用户体验。 【CAS 示例...
其中,基于Cookie的实现方式常用于Tomcat,它利用浏览器在同域名之间自动传递Cookie的机制。而Kerberos是一种典型的基于经纪人的技术,提供集中式认证和账户管理,适用于多系统环境。基于代理人的解决方案如SSH,可...
CAS 通常基于 Java 运行,而 Tomcat 是常见的应用服务器选择。 2. **CAS 服务器下载与解压**: 从官方网站下载 CAS 服务器的最新稳定版本,解压后得到 CAS 服务器的源代码和相关文件。 3. **服务端配置**: - **...
6. **注销**:用户在任一应用中选择注销时,应用会通知CAS服务器,CAS服务器清理相关的TGT和TGC,从而终止单点登录状态。 #### 二、CAS服务端配置过程 1. **下载CAS服务器**:访问官网...
- **SpringBoot**:CAS 基于 Spring Boot 构建,利用其快速开发和自动配置的特性。 - **SSO**:单点登录,CAS 的核心功能,允许用户通过一次登录访问所有关联的应用程序。 在压缩包中的 `cas.war` 文件是 CAS ...
### CAS配置详解 #### 一、概述 CAS (Central Authentication Service) 是一种单点登录 (Single Sign-On, SSO) 的实现方式,主要用于简化多应用系统间的用户认证过程。本篇将详细介绍如何在Java环境下配置CAS,...
在提供的压缩包中,包含了"我的CAS配置测试流程"文档,详细记录了配置和测试的每一步,包括可能遇到的问题和解决方案。这个文档对于初学者来说是一份宝贵的参考资料,避免了在网上搜索和尝试过程中可能遇到的困扰。 ...
在这个配置中,我们关注的是CAS 3.2版本的服务器以及两个客户端,它们都与Tomcat 6_x64版本集成,并且涉及到MySQL数据源的配置,用于管理查账账户。 首先,CAS 3.2 是一个开源的身份验证框架,它允许用户通过一个...
本文将详细介绍如何在Tomcat服务器上配置并实现基于CAS的单点登录功能。 #### 二、基础知识 ##### 1. CAS简介 CAS是一个中心认证服务,它允许应用程序验证用户的凭据而不必自己管理用户帐户。CAS支持多种身份验证...
Cas 单点登录框架的安装与配置涉及到一系列步骤,包括准备 Java Web 服务器环境、...其配置过程涉及服务器环境搭建、证书管理以及应用服务器的配置,理解并掌握这些步骤对于管理和维护基于 Cas 的 SSO 系统至关重要。
这包括设置Java环境,获取CAS服务器的WAR文件,并将其部署到Servlet容器(如Tomcat)中。 2. **配置CAS服务器**:在部署后,需要配置CAS服务器的`cas.properties`文件,定义服务器的基本属性,如端口、域名、日志...