`
raymond.chen
  • 浏览: 1433424 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CAS单点登录的配置

 
阅读更多

CAS 的结构体系

    CAS Server:负责完成对用户的认证工作, CAS Server 需要独立部署,有不止一种 CAS Server 的实现, Yale CAS Server 和 ESUP CAS Server 都是很不错的选择。

  

    CAS Client:当有对本地 Web 应用的受保护资源的访问请求,并且需要对请求方进行身份认证, Web 应用不再接受任何的用户名密码等类似的 Credentials ,而是重定向到 CAS Server 进行认证。

  

    CAS 协议

        CAS 是通过 TGT(Ticket Granting Ticket) 来获取 ST(Service Ticket) ,通过 ST 来访问服务,而 CAS 也有对应 TGT , ST 的实体,而且他们在保护 TGT 的方法上虽然有所区别,但是,最终都可以实现这样一个目的——免去多次登录的麻烦。

        当用户认证过程完成之后, CAS Server 会向 User 发送一个 Ticket granting cookie (TGC) 给 User 的浏览器,这个 Cookie 就类似 Kerberos 的 TGT ,下次当用户被 Helloservice2 重定向到 CAS Server 的时候, CAS Server 会主动 Get 到这个 TGC cookie ,然后做下面的事情:

如果 User 持有 TGC 且其还没失效,那么就允许用户访问服务 ,达到了 SSO 的效果。

如果 TGC 失效,那么用户还是要重新认证。

 

制作证书

    本范例使用JDK自带的证书生成工具keytool来生成证书,实际项目需要到专门的证书认证中心购买。

    步骤如下:

        1、在DOS窗口定位到jdk的bin目录下

        2、用keytool生成证书

            keytool -genkey -alias seasy-dp -keyalg RSA -keystore E:/seasy-dp

            注意:第一个问题的答案需要输入CAS系统的域名,比如cas.seasy.com

        3、导出证书

            keytool -export -file e:/seasy-dp.crt -alias seasy-dp -keystore e:/seasy-dp

        4、把证书导入到客户端JDK中

            keytool -import -alias seasy-dp -file "e:/seasy-dp.crt" -keystore "C:/jdk1.7.0_15/jre/lib/security/cacerts" -storepass seasy-dp

            证书需要导入到%JAVA_HOME%\jre\lib\security目录下

 

CAS服务端配置(使用tomcat_7.0.*)

     1、将生成的文件(seasy-dp和seasy-dp.crt)复制到Tomcat的根目录下,后续会用到这些文件

     2、解压cas-server-webapp-3.5.2.war到tomcat的webapps目录,并重命名为cas.war

     3、打开%TOMCAT_HOME%/conf/server.xml文件,进行以下配置

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" 
	SSLEnabled="true" maxThreads="150" scheme="https" secure="true"
	enableLookups="false" acceptCount="100" disableUploadTimeout="true"
	clientAuth="false" sslProtocol="TLS"
	keystoreFile="D:/apache-tomcat-7.0.42/seasy-dp"
	keystorePass="seasy-dp" />

     4、浏览器访问 https://cas.seasy.com:8443/cas/login, 使用 admin / admin 登录系统

     5、登出系统 https://cas.seasy.com:8443/cas/logout

 

CAS客户端配置

     新建一个web工程,在web.xml增加以下配置信息

<!-- 实现单点登出功能,可选 -->  
<listener>  
	<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
</listener>

<!-- 实现单点登出功能,可选 -->  
<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>  
	<filter-name>CASFilter</filter-name>  
	<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  
	<init-param>  
		<param-name>casServerLoginUrl</param-name>  
		<param-value>https://cas.seasy.com:8443/cas/login</param-value> 
	</init-param>  
	<init-param>  
		<param-name>serverName</param-name>  
		<param-value>http://localhost:9999</param-value>
	</init-param>  
</filter>  
<filter-mapping>  
	<filter-name>CASFilter</filter-name>  
	<url-pattern>/*</url-pattern>  
</filter-mapping>    

<!-- 负责Ticket的校验工作,必须 -->  
<filter>  
	<filter-name>CAS Validation Filter</filter-name>  
	<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  
	<init-param>  
		<param-name>casServerUrlPrefix</param-name>  
		<param-value>https://cas.seasy.com:8443/cas</param-value>  
	</init-param>  
	<init-param>
		<param-name>serverName</param-name>  
		<param-value>http://localhost:9999</param-value>
	</init-param>  
	<init-param>
	  <param-name>useSession</param-name>
	  <param-value>true</param-value>
	</init-param>
	<init-param>
	  <param-name>redirectAfterValidation</param-name>
	  <param-value>true</param-value>
	</init-param>
</filter>  
<filter-mapping>  
	<filter-name>CAS Validation Filter</filter-name>  
	<url-pattern>/*</url-pattern>  
</filter-mapping> 

<!-- 实现HttpServletRequest请求的包装, 可以通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选 -->  
<filter>  
	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
	<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  
</filter>  
<filter-mapping>  
	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
	<url-pattern>/*</url-pattern>  
</filter-mapping>

<filter>
	<filter-name>CAS Assertion Thread Local Filter</filter-name>  
	<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>  
</filter>
<filter-mapping>
	<filter-name>CAS Assertion Thread Local Filter</filter-name>  
	<url-pattern>/*</url-pattern>  
</filter-mapping> 

       web工程需要引入cas-client-core-3.2.1.jar、commons-logging-1.1.1.jar等jar包

 

异常总结:

报错:java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory

解决:在Eclipse的window > Preferences 的Servers > Tomcat > Tomcat 6.X > Paths > Prepend to classpath 加入D:\cjm\tools\apache-tomcat-7.0.42_2\bin\tomcat-juli.jar

 

报错:java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching cas.gsafc.com found

解决:在用keytool生成证书时,第一个问题的答案需要输入域名,且要与CAS系统域名要一致

 

报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

解决:证书需要导入到%JAVA_HOME%\jre\lib\security目录下。服务器的JDK版本号需要和生成证书所使用的JDK版本号一致。

 

后续补充:

      原理概述整理、SAS服务端连接真实的数据库

 

分享到:
评论

相关推荐

    Spring Security 3 与 CAS单点登录配置.doc

    Spring Security 3 与 CAS 单点登录配置 Spring Security 3 是一个基于 Java 的安全框架,提供了灵活的身份验证、授权和访问控制功能。CAS(Central Authentication Service)是一种流行的单点登录协议,允许用户...

    CAS单点登录配置

    配置CAS单点登录主要涉及以下几个步骤: 1. **安装CAS服务器**:首先,你需要下载并安装CAS服务器,通常选择最新稳定版本。这包括设置Java环境,获取CAS服务器的WAR文件,并将其部署到Servlet容器(如Tomcat)中。 ...

    CAS单点登录配置大全

    **CAS单点登录配置大全** CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源单点登录(Single Sign-On,SSO)协议。它允许用户通过一个统一的认证系统访问多个应用系统,而无需在每个系统...

    CAS单点登录配置全过程

    ### CAS单点登录配置全过程详解 #### 一、前言 CAS(Central Authentication Service)是一种开放源代码的单点登录(Single Sign-On, SSO)协议和服务实现,它允许用户在一个应用登录之后无需再次登录即可访问其他...

    CAS 单点登录配置说明

    总结,CAS单点登录配置涉及SSL安全设置、CAS服务器的部署、客户端应用的集成以及证书的管理等多个环节。理解并掌握这些知识点,对于构建安全、便捷的多应用系统环境至关重要。希望本文提供的信息对您在配置CAS单点...

    Spring Security 3 与 CAS单点登录配置-Server

    标题 "Spring Security 3 与 CAS 单点登录配置 - Server" 涉及到的是在企业级应用中实现安全访问控制的重要技术。Spring Security 是一个强大的和高度可定制的安全框架,用于保护基于 Java 的 Web 应用程序。而 CAS...

    CAS单点登录配置步骤说明书

    ### CAS单点登录配置步骤详解 #### 一、配置SSL **1.1 生成证书** 首先,为了确保数据传输的安全性,我们需要配置SSL。在配置SSL的过程中,第一步是生成证书。这一步骤可以通过Java提供的`keytool.exe`工具来完成...

    SSO\CAS 单点登录配置手册

    ### SSO/CAS 单点登录配置手册 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On, SSO)是一种让用户只需一次登录就能访问多个应用系统的认证方式。它不仅提升了用户体验,同时也提高了系统的安全性,因为用户...

    Pentaho 5.4.0.1 + CAS单点登录配置文档

    **Pentaho 5.4.0.1与CAS单点登录配置详解** Pentaho是一款开源的企业级商业智能(BI)平台,提供数据集成、分析、报告和仪表板等功能。在5.4.0.1版本中,Pentaho支持与其他系统集成,包括使用中央认证服务(Central...

    CAS单点登录配置资料

    【CAS单点登录配置详解】 CAS(Central Authentication Service)是一种广泛应用的开放源代码单点登录系统,主要用于实现网络环境中多个应用系统的身份验证集中管理。它允许用户在一个认证点登录后,无需再次输入...

    cas单点登录配置

    单点登录(Single Sign-On,简称SSO)是一种网络应用中的身份验证机制,它允许用户在一次登录后访问多个相互关联的应用系统,而无需再次进行身份验证。CAS(Central Authentication Service)是耶鲁大学开发的一个...

    基于Java的simple-cas单点登录配置简化设计源码

    该项目提供了一种基于Java的simple-cas单点登录配置简化设计源码,共包含21个文件,包括4个Java类、2个XML配置文件、2个属性文件以及其它相关文件。该设计旨在简化CAS的单点登录配置过程,使开发者能够更专注于业务...

    SSO CAS单点登录配置教程

    SSO(Single Sign-On)是单点登录的缩写,是一种网络访问控制方式,它允许用户使用一组凭证(如用户名和密码)登录一次,然后在多个应用系统间自由切换而无需再次验证身份。CAS(Central Authentication Service)是...

    cas单点登录配置及资源

    下面将详细介绍CAS单点登录的配置及资源的相关知识点。 1. **CAS基础概念** - CAS服务器:提供认证服务的核心组件,处理用户的登录请求,验证成功后生成票证(Ticket)。 - 服务提供商:需要与CAS服务器交互的Web...

    CAS单点登录服务器配置详情

    ### CAS单点登录服务器配置详解 #### 一、CAS单点登录概述 CAS(Central Authentication Service)是一种开放源代码的单点登录协议和服务框架,它为Web应用提供了一种简化了的身份验证流程。通过CAS,用户只需要在...

    CAS多数据库配置单点登录

    CAS多数据库配置单点登录 CAS(Central Authentication Service)是一种流行的单点登录解决方案,能够提供安全、...通过了解CAS单点登录的原理和配置步骤,可以更好地应用CAS单点登录,提高企业应用的安全性和可靠性。

    cas单点登录配置速成

    cas是个好东西,很灵活很好用,但是配置起来很麻烦,网上资料比较零碎。不弄个三五天根本不知道其中的原理,终于在多天的奋斗中配置成功,现在将配置的一些过程记录下来供大家参考。

Global site tag (gtag.js) - Google Analytics