1.搭建java环境;
2.下载cas-server 和cas-client-java-2.1.1
http://www.jasig.org/cas/download/cas-server-321
http://www.ja-sig.org/downloads/cas-clients/
3.部署cas-server环境
第一步:解压缩cas-server-3.2.1.zip 将cas-server-3.3.2\modules下的.war放在tomcat的webapps下解压缩之后将名称改为cas。
第二步:在地址栏中输入http://localhost:8080/cas/login 检查cas的登陆页面是否出现。
第三步:修改cas/webapp/WEB-INF/deployerConfigContext.xml 增加数据源bean的配置(该工程是用spring构建的,不懂spring的朋友需要看看spring)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
这一步是为了找到使用在数据库中检验的数据源
第四步:增加具体用户表检验查询的bean的配置
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from CORE_USERS where logid=?" />
<property name="passwordEncoder" ref="passwordEncoder"/>
<property name="dataSource" ref="dataSource" />
</bean>
同时 org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler 是不在默认的解压缩的cas的lib中需要从cas-server-3.3.2\modules找到cas-server-support-jdbc-3.3.2.jar包放在cas的lib包中,同时加入该数据库的驱动jar包
加入passwordEncoder的bean的定义(明文密码用户表可以不需要,上面对passwordEncoder引用的配置<property name="passwordEncoder" ref="passwordEncoder"/> 也可以不要)
输入http://localhost:8080/cas/login 输入用户名和密码测试系统是否正常能检验密码。
第五步:给tomcat配置SSL证书。
因为cas在登陆检验用户的时候是用的https协议(本人存在修改过http但是几次都不能完全成功,修改之后单系统可以检验但是多系统跳转出现问题)。配置ssl和java tomcat的版本有关系,本人测试jdk为jdk1.6.0_10 tomcat为tomcat-6.0.18。
[quote]keytool -delete -alias tomcatsso -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
keytool -delete -alias tomcatsso -storepass changeit
rem keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
keytool -genkey -keyalg RSA -alias tomcatsso -dname "CN=localhost" -storepass changeit
keytool -export -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -storepass changeit
keytool -import -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -keystore "%
java_home%/jre/lib/security/cacerts" -storepass changeit
[/quote]
将上面的表格中的命令拷出来放在.bat文件中作为一个批处理文件。
拷贝C:\Documents and Settings\Administrator\.keystore到%tomcat_home%\conf\
将8443端口替换为:
[quote] <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxHttpHeaderSize="8192"
keystorePass="changeit" keystoreFile="conf/.keystore"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />[/quote]
输入
https://localhost:8443/cas/login登陆系统出现cas的登陆界面
第五步:安装客户端程序
将cas-client-java-2.1.1 的客户端程序加压后将casclient.jar放入客户端服务程序的lib中,此时我们登陆客户端应用登陆界面会跳转到cas认证的页面,输入用户名和密码系统进入登陆页面。我们要做到登陆之后直接进入系统制定的页面,必须修改我们客户端的应用的登陆程序,修改的部分主要是:1.在客户端的应用系统的web.xml中加入
[quote] <filter>
<filter-name>CAS Filter</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://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>[/quote]2.登陆认证,用用户名取子系统权限放入过滤器中进行,2
2.下载cas-server 和cas-client-java-2.1.1
http://www.jasig.org/cas/download/cas-server-321
http://www.ja-sig.org/downloads/cas-clients/
3.部署cas-server环境
第一步:解压缩cas-server-3.2.1.zip 将cas-server-3.3.2\modules下的.war放在tomcat的webapps下解压缩之后将名称改为cas。
第二步:在地址栏中输入http://localhost:8080/cas/login 检查cas的登陆页面是否出现。
第三步:修改cas/webapp/WEB-INF/deployerConfigContext.xml 增加数据源bean的配置(该工程是用spring构建的,不懂spring的朋友需要看看spring)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
这一步是为了找到使用在数据库中检验的数据源
第四步:增加具体用户表检验查询的bean的配置
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="sql" value="select password from CORE_USERS where logid=?" />
<property name="passwordEncoder" ref="passwordEncoder"/>
<property name="dataSource" ref="dataSource" />
</bean>
同时 org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler 是不在默认的解压缩的cas的lib中需要从cas-server-3.3.2\modules找到cas-server-support-jdbc-3.3.2.jar包放在cas的lib包中,同时加入该数据库的驱动jar包
加入passwordEncoder的bean的定义(明文密码用户表可以不需要,上面对passwordEncoder引用的配置<property name="passwordEncoder" ref="passwordEncoder"/> 也可以不要)
输入http://localhost:8080/cas/login 输入用户名和密码测试系统是否正常能检验密码。
第五步:给tomcat配置SSL证书。
因为cas在登陆检验用户的时候是用的https协议(本人存在修改过http但是几次都不能完全成功,修改之后单系统可以检验但是多系统跳转出现问题)。配置ssl和java tomcat的版本有关系,本人测试jdk为jdk1.6.0_10 tomcat为tomcat-6.0.18。
[quote]keytool -delete -alias tomcatsso -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
keytool -delete -alias tomcatsso -storepass changeit
rem keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
keytool -genkey -keyalg RSA -alias tomcatsso -dname "CN=localhost" -storepass changeit
keytool -export -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -storepass changeit
keytool -import -alias tomcatsso -file "%JAVA_HOME%/jre/lib/security/tomcatsso.crt" -keystore "%
java_home%/jre/lib/security/cacerts" -storepass changeit
[/quote]
将上面的表格中的命令拷出来放在.bat文件中作为一个批处理文件。
拷贝C:\Documents and Settings\Administrator\.keystore到%tomcat_home%\conf\
将8443端口替换为:
[quote] <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxHttpHeaderSize="8192"
keystorePass="changeit" keystoreFile="conf/.keystore"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />[/quote]
输入
https://localhost:8443/cas/login登陆系统出现cas的登陆界面
第五步:安装客户端程序
将cas-client-java-2.1.1 的客户端程序加压后将casclient.jar放入客户端服务程序的lib中,此时我们登陆客户端应用登陆界面会跳转到cas认证的页面,输入用户名和密码系统进入登陆页面。我们要做到登陆之后直接进入系统制定的页面,必须修改我们客户端的应用的登陆程序,修改的部分主要是:1.在客户端的应用系统的web.xml中加入
[quote] <filter>
<filter-name>CAS Filter</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://localhost:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://localhost:8443/cas/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.wrapRequest</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>[/quote]2.登陆认证,用用户名取子系统权限放入过滤器中进行,2