单点登录学习(2)CAS服务器端配置编程

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>即可

     重启tomcat,再次出现登录页面时,输入用户名kevin,密码为111111登录成功
单点登录学习(2)CAS服务器端配置编程_第1张图片

你可能感兴趣的:(java,eclipse,tomcat,Scheme,服务器,credentials)