`
雨辰RainTime
  • 浏览: 112390 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CAS3.4 安装部署

    博客分类:
  • cas
阅读更多

前言

此系列文章均以我的环境及具体工作需求为例,真实环境,确保配置可用的前提下才发布的

因我主要以实战作为讲解,所以如果您对CAS的理论知识还不够清楚,尤其是CAS的运行流程及各协议的介绍,那么俺请您去官网了解一下,不用太深入了解,够用就行。

并且!文章写的可能不那么细,希望您别斤斤计较。

废话少说

 

 

搭建CAS环境十分简单,无非配置SSL

 

CAS需要SSL的支持,当然也可以不支持,比较有源码嘛。

CAS服务端是JAVA开发的,关于运行JAVA的环境就不用多说了,无非三大项:JDK、TOMCAT、IE

我所使用的JDK为1.6,TOMCAT为6.0

 

搭建CAS分为以下几个步骤:

1:下载CAS服务端及客户端(客户端因需求原因,基本上没用到)

2:配置TOMCAT的SSL

3:发布CAS服务端

4:配置CAS客户端

5:测试

 

下面将按照步骤一步步进行

 

一:下载CAS服务端及客户端

CAS的官网地址:http://www.jasig.org/cas

CAS服务端目前的最新版本是3.4.2,我也是使用的这个版本,首页就有下载提示

下载之后的文件全称是:cas-server-3.4.2-release.zip

CAS客户端我使用的是JAVA版的,目前最新版本是3.1.10,

下载地址:http://www.ja-sig.org/downloads/cas-clients/

 

二:配置TOMCAT的SSL

这个SSL说复杂也挺复杂,说容易也不难,就看您想配个什么样的SSL了

我配的是超简单的那种SSL,就是单向的,只有服务器验证的,使用JDK自带的keytool工具生成的证书。

1:创建keyPair

keytool -genkey -alias cas -keyalg RSA -keystore cas-store.keystore -validity 365

 证书的CN值应该是CAS服务端所在机器的域名,当然机器名也可,或者干脆使用localhost,这将直接影响到CAS客户端是否能请求到CAS服务端,我的环境是局域网,所以直接使用机器名就行“JcBay-PC”

2:导出公钥并导入到信任证书库

这一步如果不搞的话,那么客户端在请求CAS服务端时将抛错提示说什么找不到证书请求路径之类的信息

keytool -export -trustcacerts -alias cas -file cas-key.cer -keystore cas-store.keystore

keytool -import -trustcacerts -alias cas-server -file cas-key.cer -keystore %JAVA_HOME%/jre/lib/security/cacerts -storpass changeit

 

3:配置Tomcat的server.xml

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/cas-store.keystore"
               keystorePass="111111"
                />

 这样,Tomcat的SSL配置就结束了,需要提醒各位的是,不同版本的Tomcat所配置SSL的方法都不同,所以请根据自己所用的版本使用正确的配置方法

 https://localhost:8443  测试是否可以看到小猫

 

三:发布CAS服务端

将下载的cas-server-3.4.2-release.zip解压缩,在modules目录中拷贝cas-server-webapp-3.4.2.war到Tomcat目录下的webapps中改名为“cas”。在modules目录中还有一些JAR包,这些JAR包都是对各种认证方式的支持包,比如JDBC、LDAP、RADIUS、X509等等,更重要的是有源码,可以哪里不爽改哪里!

启动Tomcat,

四:配置CAS客户端

在我的测试例子中,采用的是JAVA版的客户端,并只是简单测试了SSO和跨域登录,均实用ST完成,并未使用代理票据

CAS的客户端源码我简单的看了看,其实主要也就是干两件事,一是请求CAS服务端并获得ST(or PT),而是验证ST并获得账号,当然,其它比如根据Filter的参数设置,也会干些其它的事。

按照官网的介绍,配置CAS客户端有很多种方法,当然咱选最简单的那种(web.xml)配置

实现客户端的Filter即可,根据官网的介绍,我也是能简单就简单,所以参数除了必选之外,都保持默认值

将下载的CAS客户端解压缩,将module目录中的所有JAR包复杂到业务系统的lib目录下,然后编辑业务系统的web.xml文件,加下以下配置

	<filter>
	  <filter-name>CAS Authentication Filter</filter-name>
	  <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
	  <init-param>
	    <param-name>casServerLoginUrl</param-name>
	    <param-value>https://JcBay-PC:8443/cas/login</param-value>
	  </init-param>
	  <init-param>
	  	<param-name>serverName</param-name>
	  	<param-value>JcBay-PC:8080</param-value>
	  </init-param>
	  <init-param>
	  	<param-name>gateway</param-name>
	  	<param-value>false</param-value>
	  </init-param>
	</filter>
	<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>
	    <param-value>https://JcBay-PC:8443/cas</param-value>
	  </init-param>
	  <init-param>
	  	<param-name>serverName</param-name>
	  	<param-value>JcBay-PC:8080</param-value>
	  </init-param>
	  <init-param>
	  	<param-name>acceptAnyProxy</param-name>
	  	<param-value>true</param-value>
	  </init-param>
	</filter>
	<filter>
	   <filter-name>CAS HttpServletRequest Wrapper Filter</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>

 别忘了配置mapping标签,我都采用的/*作用域

 

五:测试

我的测试环境是,服务端和客户端均在同一台机器上,所以,我直接输入URL:http://localhost:8080/BusTest

BusTest为业务系统名,这时会跳转到CAS登录界面,输入账号口令(均一致),确定后跳转到BusTest业务系统,表示成功。

假如说您的客户端和CAS服务端不在同一台机器,那么您的客户端就需要将服务端的公钥导入到您本地的信任库中,并且请确保服务端的域名与之前创建KEYPAIR时所填的域相同

据官网介绍说,因为CAS使用的COOKIE为服务端有效,所以没有域的概念,不论你的客户端运行在何处,只要是使用的同一个CAS服务端,那么都能实现SSO功能。

 

 

结束

2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics