陈建华的博客
专注web开发
单点登录学习-CAS服务器端配置编程
2017-05-18 21:57:49   阅读681次

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的登录页面了

0_1313449405CIVl.gif

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登录成功

0_1313449996jNl6.gif



-----------------------------------------------------
转载请注明来源此处
原地址:#

-----网友评论----
暂无评论
-----发表评论----
微网聚博客乐园 ©2014 blog.mn886.net 鲁ICP备14012923号   网站导航