CAS 浅析 - CAS客户端的安装

声明:这只是个人见解,不代表官方。
至于服务端的配置请参照《CAS 浅析 - CAS服务的安装》 http://feng-henry.iteye.com/blog/1545832
client的包的下载我在这里再给个链接: http://downloads.jasig.org/cas-clients/
为了让客户端运行起来我们得生成服务端、客户端证书。有几点需要注意的地方:
1. 设置你的应用服务器的jdk为java_home,不设的话,也要注意,之后提到jdk肯定是应用服务器的jdk(包括eclipse的jdk都要是指向同一个JDK的,否则生成的证书会不可用).
2. 证书的CN最好用域名或者机器名。

我们进入CMD运行:
keytool -genkey -v -alias 客户端密钥名称 -keyalg RSA(密钥算法) -keystore 客户端密钥文件 -dname "CN=域名/机器名,OU=机构,O=公司,L=城市,ST=区域,C=国家" -validity 有效时间 -storepass  文件密码 -keypass 密钥密码
keytool -export -alias 客户端密钥名称 -keystore 客户端密钥文件 -storepass 文件密码 -keypass 密钥密码 -file 客户端证书文件(*.cer)
keytool -import -alias 客户端密钥名称 -v -file 客户端证书 -keystore 服务端密钥文件 -storepass 服务端密钥文件密码
keytool -import -v -trustcacerts -alias 客户端密钥名称 -file 客户端证书 -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit


简单的解释一下,首先是生成客户端密钥,并保存到文件。因为JDK只能识别CER证书,所以要将密钥文件导成CER类型,然后将他添加到服务端密钥文件中,让服务端能认识这个密钥,最后就是让JDK能识别这个密钥。

这里有两篇生成密钥的详细文章:
http://www.chineselinuxuniversity.net/articles/38227.shtml
http://wsqwsq000.iteye.com/blog/1120581


下面我提供2种应用服务器的配置方法:
1.tomcat 的 修改server.xml
<Connector port="8443" 
    	 protocol="org.apache.coyote.http11.Http11Protocol"
    	 SSLEnabled="true"
    	 maxThreads="200"
    	 acceptCount="100"
    	 disableUploadTimeout="true"
    	 enableLookups="true"
    	 scheme="https" 
    	 secure="true"
    	 clientAuth="false" 
    	 sslProtocol="TLS" 
    	 keystoreFile="服务端密钥文件位置"
	 keystorePass="密码"
         truststoreFile="服务端密钥文件位置"
	 truststorePass="密码"
 />


2. jetty 服务端配置
<connector implementation="org.mortbay.jetty.security.SslSocketConnector">
<port>8443</port>
<keystore>文件位置</keystore>
<password>密码</password>
<keyPassword>密码</keyPassword>
<truststore>文件位置</truststore>							<trustPassword>密码</trustPassword>
</connector>

jetty 客户端配置
<connector implementation="org.mortbay.jetty.security.SslSocketConnector">
<port>8443</port>
<keystore>文件位置</keystore>
<password>密码</password>
<keyPassword>密码</keyPassword>
</connector>


就样就行了。然后你建一个工程然后引入cas-client-core-*.jar,依赖包我就做介绍了。
新建工程的web.xml的配置如下:
<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>
		<init-param>
			<param-name>casServerLoginUrl</param-name>
			<param-value>https://localhost:8443/cas/login</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8888</param-value>
		</init-param>
		<init-param>
			<param-name>gateway</param-name>
			<param-value>false</param-value>
		</init-param>
		<init-param>
			<param-name>renew</param-name>
			<param-value>false</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CAS Authentication Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<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://localhost:8443/cas</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:8888</param-value>
		</init-param>
		<init-param>
			<param-name>acceptAnyProxy</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>CAS Validation Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<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 Assertion Thread Local Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

</web-app>

上面这个配置文件,我就不介绍了,filter的name已经把它的功能介绍了。
然后启动项目访问你新建工程的URL就会自动跳转到cas,登录成功之后就会跳转回来。
你可以多建几个工程,来进行跳转测试。

猜你喜欢

转载自feng-henry.iteye.com/blog/1546470
Cas