近日要搭建一个单点登录服务器,选择的是CAS。参考了咖啡兔的CAS单点登录完整教程。可以中间的坎坷还是很多,看来学习一个东西还是要靠自己的大量努力才行。
一、创建、导出、导入数字证书。这是很关键的一步,我的坎坷基本都在这一步上,因为原来对数字证书的使用很不熟悉,在搭建的过程中有很多回就是数字证书设置或导入导出时出错。
1、生成证书,这里生在的一个keystore的证书,主要作用有两个,一个是要从这个证书导出给客户端应用的证书,另一个就是要在CAS服务器的TOMCAT的设置中引用这个证书。命令是:keytool -genkey -alias test -keyalg RSA -keypass changit -storepass changit -keystore server.keystore -validity 3600。-genkey是指要生成一个证书,-alias是指生成证书的别名是什么,-keyalg是指生成证书的算法是什么,这里指定的算法是RSA,-validity是指本证书的有效期是3600天,也就是不到十年。这个证书生成后的文件名是server.keystore。最重要的一点是生成证书时CN域输入时一定要填写一个域名而不是一个IP的名称。
2、导出证书: keytool -export -trustcacerts -alias test -file server.cer -keystore server.keystore -storepass changit,这一步是从刚生成的证书中导出一个分发的证书。
3、导入证书: keytool -import -trustcacerts -alias test -file server.cer -keystore %JAVA_HOME%/jdk/jre/lib/se
curity/cacerts -storepass changeit,这一步的目的是将刚才导出的数字证书导入到客户端JDK的数字证书信任库中,这样客户端的应用才能通过SSL加密信道与服务器端通信。
二、CAS服务器端的配置:我配置服务的时候,TOMCAT6的最新版本是6.0.32,打开tomcat目录下conf/server.xml文件,取消83行到87行的注释,修改内容如下:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="server.keystore"
keystorePass="changit"
/>
至此SSL就搭建完毕,这对我是最难的一步,数字证书生成的很多遍,在别人的帮助下才生成的正确的,呵呵,希望大家比较顺利吧。
接下来就是布署CAS服务器的程序,这一步很简单,就是把下载就新版的CAS.WAR文件放在TOMCAT的wepapps目录下,tomcat会自动解开war包,程序就布署好了,服务器默认的谁机制是简单用户名密码,也就是只要用户名与密码输入的一致就可以通过,很方便于测试使用。
<bean
id="serviceRegistryDao"
class="org.jasig.cas.services.InMemoryServiceRegistryDaoImpl" />
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@218.205.216.70:1521:orcl10</value>
</property>
<property name="username">
<value>bjpost</value>
</property>
<property name="password">
<value>bjpost</value>
</property>
</bean>
三、配置CAS客户端:下载cas-client-3.2.0.jar文件,这个文件可以去CAS的官网下载。然后配置客户端的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>CASFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<!-- CAS login 服务地址-->
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://sso.castest.com:8443/cas/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://www.castest.com:80</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--负责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>
<param-value>https://sso.castest.com:8443/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://www.castest.com:80</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-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>这上步只要按照这个文件去配置应该没有什么太大的问题,只需要把相应的地址改成自己的地址就可以了。
这里只是对自己配置CAS服务的一个过程的记录,由于时间比较紧,所以写的不是很细,可能对数字证书那一块有些地方写的不是很对,希望大家可以指正。
508

被折叠的 条评论
为什么被折叠?



