1.配置tomcat7的SSL访问
Step1:生成.keystore文件
命令行:keytool -genkey -keyalg RSA -alias tomcat -dname "cn=localhost" -storepass changeit
回车后会提示输入密码,这里输入的是changeit
导出证书:keytool -export -alias tomcat -file %java_home%/jre/lib/security/tomcat.crt -storepass changeit
导入证书:keytool -import -alias tomcat -file %java_home%/jre/lib/security/tomcat.crt -keystore %java_home%/jre/lib/security/cacerts -storepass changeit
Step2:修改tomcat的配置文件${TOMCAT_HOME}\conf\server.xml
找到这几行
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->将其修改为以下代码,注意keystoreFile=“ ${user.home}/.keystore"就是指向我们刚才生成的keystore文件,keystorePass=" changeit"就是我们用keytool生成keystore时设置的密码
<Connector 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:/Documents and Settings/Administrator/.keystore" truststoreFile="D:/work/java_tools/jdk1.6.0_22/jre/lib/security/cacerts" keystorePass="changeit"/>
这时候通过http://localhost:8443就可以显示tomcat的默认访问页面了
2.下载cas服务器端组件
下载地址:http://www.jasig.org/cas/download
目前的最高版本是CAS Server 3.4.8 Release
3.导入CAS Server Web工程
a) 在eclipse中新建一个web工程,找到下载压缩包里的modules\cas-server-webapp-3.4.8.war文件,将这个文件中的所有内容复制到你新建的web工程下
b)找到下载压缩包里的cas-server-webapp\src\main\java目录,将里面的源文件复制到eclipse工程的src目录中
c)运行工程,访问https://localhost:8443/cas/就可以展示出cas的登录页面了
4.登录
CAS默认的用户名和密码是用的${TOMCAT_HOME}\conf\tomcat-user.xml中配置的用户名和密码,所以只要用这个文件中的任意一个匹配的用户名密码即可登录
如tomcat/tomcat
5.修改cas的验证方式
CAS的认证方式是可配置的,即我们可以通过提供自己的认证方式来替换默认的以Tomcat用户名密码的方式,这个是在WEB-INF\deployerConfigContext.xml文件中指定的
找到<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" /> ,我们要做的只是提供另一个验证实现类,该类继承自org.jasig.cas.authentication.handler.AuthenticationException,然后实现authenticateUsernamePasswordInternal方法即可,看我们的例子:
package com.crazycoder2010.cas.auth; import org.jasig.cas.authentication.handler.AuthenticationException; import org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler; import org.jasig.cas.authentication.principal.UsernamePasswordCredentials; public class UserNamePasswordAuthenticationHandler extends AbstractUsernamePasswordAuthenticationHandler { @Override protected boolean authenticateUsernamePasswordInternal( UsernamePasswordCredentials credentials) throws AuthenticationException { String userName = credentials.getUsername(); String password = credentials.getPassword(); if("kevin".equals(userName) && "111111".equals(password)){ return true; } return false; } }这里我们写死了用户名和密码,在实际的生产环境中,这些用户可能是来自数据库,那么只要进行相关的jdbc操作即可
类写完后,到配置文件中替换先前的<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />为<bean class="com.crazycoder2010.cas.auth.UserNamePasswordAuthenticationHandler"></bean>即可