`

CAS在Tomcat实现SSO

 
阅读更多

本文以tomcat6.0为例

准备工作:下载cas-server-3.1.1-release.zipcas-client-java-2.1.1.zip。

1、CAS Server

 

CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。

 

2、配置 Tomcat 使用 Https 协议

 

    1)、生成key,在命令行中输入:keytool -genkey -alias mykey -keyalg RSA -keystore c:/tomcat.key

            产生别名为mykey的证书放到c:/tomcat.key。

           注意:您的名字与姓氏是什么?

           [Unknown]:  主机名或者IP最好是做了host映射的主机名,测试的时候最好写成localhost,不然通过 localhost访问会报错。

    2)、在tomcat的server.xml文件里加入,指定key文件地址。         

 

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="C:/tomcat.key"
  />

   3)、重启tomcat,就可以通过https://localhost:8443访问了。

 

3、搭建CAS服务端

    1)、将下载的cas-server-3.1.1-release.zip解压
    2)、将解压包内的modules文件夹下的cas-server-webapp.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war

可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。


4、扩展认证接口

    CAS Server通过spring进行的配置

    1)、配置查询用户数据源,打开文件 %CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml,添加一个新的 bean 标签,以mysql为例。

           拷贝mysql jdbc jar到cas webapp 下。

        

    <bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    	<property name="driverClassName">
      	<value>com.mysql.jdbc.Driver</value>
     	</property>
     	<property name="url">
     		<value>jdbc:mysql://localhost:3306/mydb?characterEncoding=utf-8</value>
     	</property>
     	<property name="username">
      	<value>root</value>
     	</property>
     	<property name="password">
      	<value>admin</value>
     	</property>
	</bean>

   2)、配置查询sql

       

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
 			<property name="dataSource" ref="casDataSource" />
 			<property name="sql" 
       value="select password from user where lower(username) = lower(?)" />
       <property name="passwordEncoder" ref="myPasswordEncoder"/>
		</bean>
		
 		<bean id="SearchModeSearchDatabaseAuthenticationHandler"
      class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler"
      abstract="false" scope="singleton" lazy-init="default" 
                       autowire="default">
  		<property  name="tableUsers">
   			<value>user</value>
  		</property>
  		<property name="fieldUser">
   			<value>username</value>
  		</property>
  		<property name="fieldPassword">
   			<value>password</value>
  		</property>
  		<property name="dataSource" ref="casDataSource"/>
		</bean>

  3)、配置密码加密策略,这个类需要自己实现。

  

<bean id="myPasswordEncoder" 
            class="org.jasig.cas.util.MyPasswordEncoder"/>

    比如md5。

public class MyPasswordEncoder implements PasswordEncoder {

	public String encode(String arg0) {
		// TODO Auto-generated method stub
		byte[] salt = PasswordUtil.getStaticSalt();
		String ciphertext = PasswordUtil.encrypt("admin", arg0, salt);
		return ciphertext;
	}

}

 

5、搭建CAS客户端

  1)、配置客户端服务器的HTTPS协议方法同服务端。
  2)、cas-client-java-2.1.1.zip解压并将casclient.jar拷贝到你的项目的lib目录下,/cas-client-java-2.1.1/lib下的所有包copy到WEB-INF/lib目录下。

  3)、交换秘钥,

         根据秘钥生成证书 keytool -export -file client.cert -alias mykey -keystore c:/tomcat.key。

        将证书导入到客户端keytool -import -trustcacerts -file client.cert -keypass changeit -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -alias mykey。

 

6、配置应用的filter

  新建两个webapp,作为单点登录的web应用,webcas1,webcas2,在各自的web.xml下加入filter,设置filter拦截请求到CAS服务器验证登录信息。

 

<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://casserver: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.serverName</param-name>
      <param-value>domain1:8081</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

<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://casserver: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.serverName</param-name>
      <param-value>domain2:8081</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

// 以下两者都可以获取用户登录信息
session.getAttribute(CASFilter.CAS_FILTER_USER);
session.getAttribute("edu.yale.its.tp.cas.client.filter.user");

 

7、测试SSO
当访问http://domain1:8080/webcas1的时候,服务器判断没有登录,会跳转到https://localhost:8443/cas/login,进行登录。
再次访问http://domain2:8080/webcas2的时候,就不用登陆了,可以根据session.getAttribute("edu.yale.its.tp.cas.client.filter.user");
获取登录信息。
8、扩展CAS SERVER页面
我们想自己定义登陆界面和错误提示界面。
在部署 CAS 之前,我们可能需要定制一套新的 CAS Server 页面,添加一些个性化的内容。最简单的方法就是拷贝一份 default 或 simple 文件到“ cas/WEB-INF/view/jsp ”目录下,比如命名为 newUI,接下来是实现和修改必要的页面,有 4 个页面是必须的:
casConfirmView.jsp: 当用户选择了“ warn ”时会看到的确认界面
casGenericSuccess.jsp: 在用户成功通过认证而没有目的Service时会看到的界面
casLoginView.jsp: 当需要用户提供认证信息时会出现的界面
casLogoutView.jsp: 当用户结束 CAS 单点登录系统会话时出现的界面
CAS 的页面采用 Spring 框架编写,对于不熟悉 Spring 的使用者,在修改之前需要熟悉该框架。
页面定制完过后,还需要做一些配置从而让 CAS 找到新的页面,拷贝“ cas/WEB-INF/classes/default_views.properties ”,重命名为“ cas/WEB-INF/classes/ newUI_views.properties ”,并修改其中所有的值到相应新页面。最后是更新“ cas/WEB-INF/cas-servlet.xml ”文件中的 viewResolver。
 
分享到:
评论

相关推荐

    CAS+TOMCAT实现单点登录SSO

    cas-server-3.3.1-release.zip服务器端所有资源包 cas-client-java-2.1.1.zip客户端源码包 casclient-2.1.1.jar客户端JAR包 说明.doc,完整的说明帮助文档

    使用 CAS 在 Tomcat6 中实现单点登录

    总结来说,实现使用CAS在Tomcat6中进行单点登录,需要理解SSO的基本概念,熟悉CAS的工作原理和协议流程,掌握CAS Server的部署和配置,以及CAS Client在Tomcat中的集成。通过这些步骤,可以构建一个安全且方便的单点...

    使用CAS在Tomcat中实现单点登录参考代码及配置

    ### 使用CAS在Tomcat中实现单点登录的关键知识点 #### 一、CAS简介与特性 - **CAS**(Central Authentication Service)是由耶鲁大学发起的一个开源项目,它为Web应用程序提供了一种简单可靠且功能强大的单点登录...

    使用CAS在Tomcat中实现单点登录

    CAS(Central Authentication Service)是SSO的一种实现,由Yale大学发起,后来成为JA-SIG项目的一部分。CAS作为一个开源的Web应用程序认证框架,为多种平台提供了轻量级的单点登录解决方案。 CAS的主要特点是其...

    基于Tomcat6的CAS SSO配置

    基于Tomcat6的CAS SSO配置涉及的主要知识点包括SSO(Single Sign-On,单点登录)、CAS(Central Authentication Service,中心认证服务)、SSL(Secure Socket Layer,安全套接层)以及Tomcat服务器的配置。...

    Weblogic使用YALE(耶鲁)CAS实现SSO单点登录 的方法.doc

    3. 实现 SSO:在 Weblogic 服务器中实现 SSO 单点登录,使用 CAS 服务器来验证用户的身份。 使用 YALE CAS 实现 SSO 单点登录可以提供一个安全、可靠的身份验证解决方案,适合大多数的企业应用场景。

    tomcat配置ssl-单点登录(sso).rar

    标题中的“tomcat配置ssl-单点登录(sso)”指的是在Apache Tomcat服务器上配置SSL安全套接层,以及实现单点登录(Single Sign-On, SSO)功能。这是一个涉及网络安全和用户认证的重要主题,主要目标是提高Web应用的...

    在Tomcat中使用Yale CAS实现单点登陆(SSO)

    在Tomcat服务器中集成Yale CAS以实现SSO,首先需要下载CAS服务器和客户端的发行包。这两个包可以从官方提供的链接获取,分别是cas-server-2.0.12.zip和cas-client-2.0.11.zip。解压缩CAS服务器的war文件(cas.war)...

    用CAS实现框架的SSO单点登录

    ### 用CAS实现框架的SSO单点登录 #### SSO单点登录概念与原理 SSO(Single Sign-On)即单点登录技术,是一种让用户只需登录一次即可访问多个关联应用的技术。它不仅提升了用户体验,同时也加强了系统的安全性。...

    使用CAS 在Tomcat 中实现单点登录实例教程,有例子和参考

    在这个实例教程中,我们将重点讨论如何使用中央认证服务(Central Authentication Service,简称CAS)在Apache Tomcat服务器上实现SSO。 CAS是一个开源的身份验证框架,它提供了统一的登录界面,用户只需一次登录,...

    SSO.rar_CAS SSO_ladp sso_ldap_linux sso_sso

    在这个场景中,我们关注的是如何在Linux环境中利用LDAP(Lightweight Directory Access Protocol)和CAS(Central Authentication Service)来实现SSO。 **LDAP SSO** LDAP是一个轻量级的目录访问协议,常用于存储...

    cas tomcat整合单点登录demo

    【标题】"CAS Tomcat整合单点登录Demo"是一个示例项目,展示了如何将CAS(Central Authentication Service)与Tomcat应用程序服务器集成,实现单点登录(Single Sign-On, SSO)的功能。CAS是一种开放源码的身份验证...

    实现SSO的CAS开源框架介绍

    - 接下来,需要在客户端的应用程序中配置CAS Filter来实现SSO功能。以一个简单的Servlet为例,在其`web.xml`文件中添加如下配置: ```xml &lt;filter-name&gt;CASFilter &lt;filter-class&gt;edu.yale.its.tp.cas.client....

    cas-server & tomcat (springmvc cas maven sso 详解 )

    cas-server & tomcat (springmvc cas maven sso 详解 ) springmvc cas maven sso 详解 http://knight-black-bob.iteye.com/blog/2342088

    基于cas的sso 单点登录tomcat配置过程

    在基于CAS的SSO实现中,Tomcat作为应用服务器,通常会与CAS服务器进行集成,以实现用户统一的身份验证。以下是对整个配置过程的详细说明: 1. **环境准备**:首先确保你的开发环境已经安装了Java运行环境(JRE)和...

    CAS单点登录SSO( Single Sign-On)

    CAS(Central Authentication Service)单点登录(Single Sign-On,简称SSO)是一种网络认证协议,旨在简化用户在多个应用系统间的登录流程。当用户通过CAS认证后,可以在无需再次输入凭证的情况下访问已接入CAS的...

    CAS框架SSO的实现.rar

    使用CAS框架实现SSO单点登录,其中包含: 1、CAS服务器端安装包 2、客户端源码包和所需的所有jar包 ...6、Tomcat中使用Yale+CAS实现单点登陆(SSO).doc 7、以及本人的搭建过程中所遇到得问题和解决方法

    casServer+tomcat

    6. **集成其他应用**:为了实现SSO,你需要在每个需要使用CasServer的应用系统中配置Cas客户端库,并正确配置CasServer的地址和验证参数。 在压缩包文件列表中提到的"cas"可能指的是CasServer的WAR文件或者解压后的...

    springboot+cas5.x+shiro+pac4j实现sso集成

    本项目基于SpringBoot、CAS5.x、Shiro和Pac4j实现了SSO集成,下面将详细阐述这些技术组件以及它们在SSO中的作用。 1. **SpringBoot** SpringBoot是Spring框架的一个子项目,它简化了Spring应用的初始搭建和运行...

Global site tag (gtag.js) - Google Analytics