使用CAS+tomcat搭建单点登录

1 使用软件包,cas-client-3.1.10 cas-server-3.3.5 ,apache-tomcat-6.0.20
2 服务端的安装:
    生成keyStore ,在命令行输入: 
  keytool -genkey -alias mykey -keyalg RSA -keystore server.keystore
按照提示来: 
输入keystore密码:123456
再次输入新密码:123456
您的名字与姓氏是什么?
    [Unknown]:   主机名如果是本机就写localhost,注意这里不要写ip地址,
您的组织单位名称是什么?
    [Unknown]: gxcx
您的组织名称是什么?
    [Unknown]:   gxcx
您所在的城市或区域名称是什么?
    [Unknown]:   beijing
您所在的州或省份名称是什么?
    [Unknown]:   beijing
该单位的两字母国家代码是什么
    [Unknown]:   cn
CN=localhost, OU=  gxcx  software ltd., O=  gxcx, L=beijing, 

ST=beijing, C=cn 正确吗?
    [否]:   y
输入<mykey>的主密码
             (如果和 keystore 密码相同,按回车):
在当前目录下可以找到一个文件:server.keystore,其中就包含了自签名的证书。

在%TOMCAT_HOME%目录下新建目录keystore,并拷贝server.keystore到其目录下


修改%TOMCAT_HOME%/conf/server.xml文件。添加https的Connector。
<Connector
                 port="8443" minSpareThreads="5" maxSpareThreads="75"
                 enableLookups="true" disableUploadTimeout="true"
                 acceptCount="100"   maxThreads="200"
                 scheme="https" secure="true" SSLEnabled="true"
                 keystoreFile="keystore/server.keystore"  keystorePass="123456"
                 clientAuth="false" sslProtocol="TLS"/>
注意:
          1)keystoreFile指向文件%TOMCAT_HOME%/keystore/server.keystore文

件。
          2)keystorePass就是刚才生成certificate keystore的密码。
          3)测试Https。
访问https://localhost:8443/,提示有不安全的证书,接受证书,看到可亲的tom猫
至此SSL协议配置结束。


2、搭建CAS的服务端

4.1   CAS在tomcat上的发布
1)将下载的server包解压
2)将解压包内的modules文件夹下的cas那个war文件,cas-server-webapp-3.3.5.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war
可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现

正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。


5、搭建CAS客户端

密钥的交换。
1)               服务端密钥的导出
keytool -export -file client.cert -alias mykey -keystore 

server.keystore
2)               客户端密钥的导入
将导出的client.cert密钥copy到客户端机器上在客户端机器上运行
keytool -import -trustcacerts -file client.cert -keypass changeit -

keystore "%JAVA_HOME%/jre/lib/security/cacerts" -alias mykey1



在tomcat 下面新建目录,casclient

在web-inf/lib下面加入cas-client-3.1.10的jar.
我这里用了spring 还加入了spring的相关类: 
我这里是如下类;
  backport-util-concurrent-3.1.jar
  cas-client-core-3.1.10.jar
  cas-client-integration-atlassian-3.1.10.jar
  cas-client-support-distributed-ehcache-3.1.10.jar
  cas-client-support-distributed-memcached-3.1.10.jar
  commons-collections-3.2.jar
  commons-logging-1.1.jar
  ehcache-1.5.0.jar
  jsr107cache-1.0.jar
  lp.txt
  servlet-api-2.3.jar
  spring-aop.jar
  spring-beans.jar
  spring-context-support.jar
  spring-context.jar
  spring-core.jar
  spring-jdbc.jar
  spring-orm.jar
  spring-security-acl-2.0.4.jar
  spring-security-core-2.0.4.jar
  spring-security-core-tiger-2.0.4.jar
  spring-security-taglibs-2.0.4.jar
  spring-test.jar
  spring-tx.jar
  spring-web.jar
  xmlsec-1.3.0.jar
 
spring-security开头的可以不要。

配置文件我附件贴在后面。web.xml 
/WEB-INF/classes/spring-appContext.xml 我也贴在后面。

启动后,你访问 http://localhost:8080/secure/目录就会重定向到cas单点登录服务器上,需要你登录以后再访问。
cas缺省的用户名/密码是admin/admin

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
 
<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/classes/spring-appContext.xml</param-value>
    </context-param>
 

<listener> 
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSession Listener</listener-class>
</listener>


<listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
     
   
<filter>
       <filter-name>CAS Authentication Filter</filter-name>
       <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
       <init-param>
          <param-name>targetBeanName</param-name>
          <param-value>casAuthenticationFilter</param-value>
       </init-param>
</filter>
 
    <filter>
       <filter-name>CAS Validation Filter</filter-name>
       <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
       <init-param>
          <param-name>targetBeanName</param-name>
          <param-value>casValidationFilter</param-value>
       </init-param>
    </filter>
 
    <filter>
       <filter-name>CAS HttpServletRequestWrappe rFilter</filter-name>
       <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
       <init-param>
          <param-name>targetBeanName</param-name>
          <param-value>casHttpServletRequestWra pperFilter</param-value>
       </init-param>
    </filter>
 
 
 
  <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>
                    
    <filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
       <url-pattern>/secure/*</url-pattern>
    </filter-mapping>
 
    <filter-mapping>
       <filter-name>CAS Validation Filter</filter-name>
       <url-pattern>/secure/*</url-pattern>
    </filter-mapping>
 
    <filter-mapping>
       <filter-name>CAS HttpServletRequestWrappe rFilter</filter-name>
       <url-pattern>/secure/*</url-pattern>
    </filter-mapping>
 

</web-app>


spring-appContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
                         http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
 
<bean id="casAuthenticationFilter"
       class="org.jasig.cas.client.authentication.AuthenticationFilter">
           <property name ="casServerLoginUrl" value="https://localhost:8443/cas/login"/>
           <property name ="serverName" value="http://localhost:8080"/>
    </bean>
 
<bean id="casValidationFilter"
          class="org.jasig.cas.client.validation.Cas20ProxyReceivingTicke tValidationFilter">
       <property name="ticketValidator">
          <ref bean="Cas20ServiceTicketValida tor"/>
       </property> 
       <property name="useSession" value="true"/> 
       <property name="serverName" value="http://localhost:8080"/> 
       <property name="redirectAfterValidation" value="true"/>
    </bean> 
        
    <bean id="Cas20ServiceTicketValida tor" class="org.jasig.cas.client.validation.Cas20ServiceTicketValida tor"> 
       <constructor-arg index="0" value="https://localhost:8443/cas" /> 
    </bean>    
 
    <bean id="casHttpServletRequestWra pperFilter" class="org.jasig.cas.client.util.HttpServletRequestWrappe rFilter"/>
</beans>

secure 下面的测试页面 index.jsp 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ page contentType="text/html; charset=UTF-8" %>
<head>
<body>
<%="Hello"%>
你登录了;;<%= request.getRemoteUser() %>
</body>
</html>

可以用 request.getRemoteUser()获得用户登录名。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值