`
crossover
  • 浏览: 3503 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CAS

阅读更多

CAS

Defination:

         Open source project for SSO which contains Client(Including : Java, .Net, PHP, Perl, Apache, uPortal, Ruby) & Server was create by Yale.

 

Principle:

    Cas client binded with app1,when u login in the app1,cas client will check your authority( Service Ticket), It will redirect to the cas server in case your ticket is not authorized.

 

------------------------------------------------------------------------------------------------------------------

Setting up:

 

Configure tomcat SSL

     The communication between Cas client and server is via SSL

 

a. Add this on the tomcat server.xml

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true" 
               clientAuth="false" sslProtocol="TLS" keystoreFile="your key dir" keystorePass="" />

 

b. Create your key

//create certificate
keytool -genkey -alias aaa -keylag RSA -keystore d:/ccc
{*after Enter you will input some info ,what's your name ? must be input your server hostname}
//export certificate
keytool -export -file d:/ddd.crt -alias aaa -keystore d:/ccc
//import to JVM
keytool -import -keystore "your tomcat jre/lib/security/cacerts" -file d:/ddd.crt -alias aaa

*IF import to JVM this step is error: delete the cacerts and try again
*make sure the JVM is your tomcat's JVM 

 

c. Server

 zip the cas-server.zip and put the .war into the wabapp folder.

 

d.  Client

zip the cas-client.zip and put the .jar into your project . 

Then add some filters

<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
	<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://isdaac.com:8443/cas/login
			</param-value>
		</init-param>
		<init-param>
			<!--这里的server是服务端的IP-->
			<param-name>serverName</param-name>
			<param-value>http://10.243.75.101:9090</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://isdaac.com:8443/cas</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://10.243.75.101:9090</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>

	<!--
		该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
		比如AssertionHolder.getAssertion().getPrincipal().getName()。
	-->
	<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>

	<!-- 自动根据单点登录的结果设置本系统的用户信息 
	<filter>
		<display-name>AutoSetUserAdapterFilter</display-name>
		<filter-name>AutoSetUserAdapterFilter</filter-name>
		<filter-class>
			com.wsria.demo.filter.AutoSetUserAdapterFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>AutoSetUserAdapterFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>-->
	<!-- ======================== 单点登录结束 ======================== -->

 

e. LDAP 

		<property name="authenticationHandlers">
			<list>
				<!--
					| This is the authentication handler that authenticates services by means of callback via SSL, thereby validating
					| a server side SSL certificate.
					+-->
				<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
					p:httpClient-ref="httpClient" />
				<!--
					| This is the authentication handler declaration that every CAS deployer will need to change before deploying CAS 
					| into production.  The default SimpleTestUsernamePasswordAuthenticationHandler authenticates UsernamePasswordCredentials
					| where the username equals the password.  You will need to replace this with an AuthenticationHandler that implements your
					| local authentication strategy.  You might accomplish this by coding a new such handler and declaring
					| edu.someschool.its.cas.MySpecialHandler here, or you might use one of the handlers provided in the adaptors modules.
					
				<bean 
					class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
				+-->
				<bean   class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">    
					<property name="filter" value="sAMAccountName=%u" />    
					<property name="searchBase" value="ou=shanghai,dc=XXX,dc=com" />      
					<property  name="contextSource"   ref="contextSource" />    
				</bean>	
			</list>
		</property>
	</bean>

	<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">       
 <property name="anonymousReadOnly" value="false" />  

 <property name="pooled" value="true" />  
 <property name="urls">  
  <list>  
   <value>ldap://XXX.com:389/</value>   
   <!-- asia  <value>ldap://XXX.com:389/</value>   -->
  </list>  
 </property>  
  <!-- 如果是老版本,这里应该用的是userName,而不是userDn -->   
 <property name="userDn" value="CN=XXX,OU=IT,OU=Shanghai,DC=XXX,DC=com" />  
 <property name="password" value="XXX" />  
 <property name="baseEnvironmentProperties">  
  <map>  
   
  <entry>                       
   <key><value>java.naming.security.authentication</value></key>    
   <value>simple</value>  
  </entry>  
  </map>  
 </property>  
</bean> 

 f. Get Value

		AssertionImpl key = (AssertionImpl)session.getAttribute("_const_cas_assertion_");
		String name = key.getPrincipal().getName();

 

 

 

 

     

分享到:
评论

相关推荐

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。本压缩包提供了CAS服务端自定义认证的实现,以及CAS客户端的配置...

    搭建cas服务,cas与sqlserver连接,cas与security连接

    CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,主要用于实现单点登录(Single Sign-On,SSO)。本教程将详细介绍如何搭建CAS服务,并将其与SQL Server数据库和Spring Security进行集成。...

    cas4.2.7 实现其他系统和cas互相认证互信

    3. **集成CAS客户端库**:在外部系统中,需要集成CAS客户端库,如Java CAS Client、Spring Security CAS等,它们负责处理与CAS服务器的交互,包括重定向用户到CAS登录页面、接收和验证服务票证。 4. **配置客户端...

    cas集成AD域

    CAS(Central Authentication Service)是Java开发的一个开源身份验证框架,主要功能是提供单点登录(Single Sign-On,SSO)服务。在企业环境中,尤其是在已部署了Active Directory(AD)域服务的情况下,将CAS与AD...

    cas 自定义登录页面

    CAS(Central Authentication Service)是一种广泛使用的开放源代码单点登录(Single Sign-On,SSO)框架,它允许用户通过一个中央认证服务访问多个应用系统,而无需为每个系统单独进行登录。在实际的企业环境中,...

    H3C CAS 3.0 云计算平台 【附CAS3.0产品培训PPT和安装使用指南】.rar

    H3C CAS 3.0版 H3C CAS 3.0产品培训胶片 H3C CAS-云计算管理平台技术白皮书V2.0 H3C CAS-云计算管理平台 安装指导-5W101-整本手册 H3C CAS-维护手册V2.0 H3C CAS-工程开局指导手册V2.0 H3C CAS-Rest API H3C ...

    cas-4.1.7最新

    CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,它允许用户通过一个认证过程访问多个应用系统,而无需为每个系统单独登录。CAS 4.1.7是该框架的一个特定版本,发布于...

    Cas5.2.6(cas-overlay-template-5.2.6)服务端

    CAS(Central Authentication Service)是一种广泛使用的开放源码身份验证框架,它允许用户通过单一登录(Single Sign-On,SSO)访问多个应用系统。在你提供的资料中,"Cas5.2.6(cas-overlay-template-5.2.6)服务端...

    iscas.rar_iscas_基准电路_逻辑综合

    本文将围绕"iscas.rar_iscas_基准电路_逻辑综合"这一主题,深入探讨这些概念及其在实际应用中的重要性。 iscas基准电路是一套广泛使用的标准测试集,由国际固态电路会议(International Solid-State Circuits ...

    cas修改登录页

    【标题】"CAS修改登录页"是一个针对中央认证服务(Central Authentication Service,简称CAS)的定制化实践。在单点登录(Single Sign-On,SSO)系统中,CAS扮演着核心角色,它提供了统一的身份验证服务,使得用户只...

    cas自定义登录页面

    CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在网络上验证用户身份。它允许用户通过一个认证过程访问多个应用系统,而无需为每个系统分别进行登录。在你的场景...

    idea 中导入cas

    在IT行业中,Cas(Central Authentication Service)是一种广泛使用的开源身份验证和授权框架,它使得单点登录(Single Sign-On, SSO)变得简单。本文将详细介绍如何在IntelliJ IDEA(简称Idea)中导入和编译CAS项目...

    基于springboot,cas5.3,shiro,pac4j,rest接口获取ticket不再跳转cas server登录页

    本文将深入探讨如何利用Spring Boot、CAS 5.3、Shiro、Pac4J这四个强大的工具来构建一个高效且用户友好的REST接口,以获取CAS(Central Authentication Service)票据,避免用户被重定向到CAS服务器的登录页面。...

    cas-server-3.5.1和cas-client-3.2.1

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统,它允许用户通过一个认证入口访问多个应用系统,而无需在每个系统上分别进行登录。在这个压缩包中,...

    cas-server-3.4.10-release和cas-client-3.2.1-release两个

    CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在多应用环境中统一用户认证。这个协议由耶鲁大学开发并开源,现在由Apereo基金会维护。标题提到的"cas-server-...

    cas客户端jar包

    CAS(Central Authentication Service)是耶鲁大学开发的一种基于Web的单点登录(Single Sign-On,简称SSO)协议。在企业或机构的信息系统环境中,它允许用户通过一次登录即可访问多个应用系统,无需多次输入用户名...

    CAS 各种jar包

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,SSO)框架,由耶鲁大学开发并维护。它允许用户通过单一的登录验证来访问多个应用系统,从而简化了用户的登录过程,...

    H3C CAS云计算软件套件《H3C CAS七日通》.rar

    《H3C CAS七日通》是一份针对H3C云计算软件套件——H3C Cloud Automation System (简称H3C CAS) 的详尽学习资料,旨在帮助用户在一周内快速掌握该系统的使用和管理。这份资料包含了有声讲解版,以音频形式辅助理解,...

    CAS restful接口调用

    ### CAS Restful接口调用详解 #### 一、CAS简介 CAS(Central Authentication Service)是一种开源的单点登录协议和服务实现。它旨在减轻单一Web应用的登录流程,并为多个服务提供一个集中式的认证机制。CAS支持...

    cas3.5.2单点登录文档详细配置

    3. 配置CAS Client,这可能涉及修改web.xml文件,引入CAS客户端库,并配置客户端的信任CAS Server的地址。 4. 可能需要修改CAS客户端的Java源代码,特别是对于证书验证的问题,可能需要重新编译并替换原有包。 5. ...

Global site tag (gtag.js) - Google Analytics