`

CAS 客户端与一般Web项目集成

 
阅读更多

这一段时间有同事在问CAS -Client的问题这里就基本问分析一下

1)由于CAS-Server 登录后客户端会记入自动session中(部署WebApp-Server) 

    所以我们只需要获取对应的Principal 在获取其中的信息

 

2)根据Principal 注册登录

HttpServletResponse resp = (HttpServletResponse)response;
		HttpSession session = req.getSession();
		if (session != null) {
			Object obj = session.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);
			if (obj != null) {
				Assertion assertion = (Assertion)obj;
				AttributePrincipal p= assertion.getPrincipal();
				session.setAttribute("user", true);
			}
			
		}

 

3)定义权限过虑器

package com.zk.xx.login.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.jasig.cas.client.authentication.AttributePrincipal;
import org.jasig.cas.client.util.AbstractCasFilter;
import org.jasig.cas.client.validation.Assertion;

/**
 * Servlet Filter implementation class LoginFilter
 * @author LiuQing
 * 2010-10-05 11:45:56
 */
@WebFilter("/*")
public class LoginFilter implements Filter {

    /**
     * Default constructor. 
     */
    public LoginFilter() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	
	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

	
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest)request;
		//String uri = req.getServletContext().getContextPath();
		String actionName = req.getServletPath();
		//System.out.println(uri + " " + m);
		HttpServletResponse resp = (HttpServletResponse)response;
		HttpSession session = req.getSession();
		if (session != null) {
			Object obj = session.getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);
			if (obj != null) {
				Assertion assertion = (Assertion)obj;
				AttributePrincipal p= assertion.getPrincipal();
				session.setAttribute("user", true);
			}
			
		}
		
		
		if ("/login".equals(actionName)) {
		    req.getSession(true).setAttribute("user",true);	
		}
		else if ("/logout".equals(actionName)) {
			if (req.getSession() != null) {
				req.getSession().removeAttribute("user");
			}
		}
		if (req.getSession() == null || req.getSession().getAttribute("user") == null) {
		    RequestDispatcher disp = req.getRequestDispatcher("/login.jsp");
		    disp.forward(req, resp);
		}
		else {
			
			chain.doFilter(req, resp);
		}
		
	}

}

 

4)web.xml 文件

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<display-name>demo1</display-name>

	<context-param>
		<param-name>serverName</param-name>
		<param-value>http://localhost:1010</param-value>
	</context-param>
	<filter>
		<filter-name>SsoSession</filter-name>
		<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
	</filter>

	<filter>
		<filter-name>CAS Authentication Filter</filter-name>
		<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
		<init-param>
			<param-name>casServerLoginUrl</param-name>
			<param-value>https://localhost/cas/login</param-value>
		</init-param>
		<init-param>
			<param-name>ignorePattern</param-name>
			<param-value>http://localhost:1010/demoSSn01/login.jsp|/static/css/|/static/js/|http://localhost:1010/demoSSn01/$|http://localhost:1010/demoSSn01/login$|http://localhost:1010/demoSSn01/logout$</param-value>
		</init-param>
	</filter>

	<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://localhost/cas</param-value>
		</init-param>
		<init-param>
			<param-name>serverName</param-name>
			<param-value>http://localhost:1010</param-value>
		</init-param>
	</filter>

	<filter>
		<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
		<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
	</filter>

	<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>SsoSession</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<filter-mapping>
		<filter-name>CAS Authentication Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	
	<filter-mapping>
		<filter-name>CAS Validation Filter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<filter-mapping>
	    <filter-name>CAS Assertion Thread Local Filter</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>

 

 

 

 

 

 

 

5
2
分享到:
评论

相关推荐

    整合spring+springWebMVC+cas客户端

    在IT行业中,集成Spring、Spring Web MVC和CAS客户端是一项常见的任务,主要用于构建安全的Web应用程序。下面将详细解释这些技术及其整合过程。 首先,Spring是一个开源的Java框架,它简化了开发过程,提供了依赖...

    cas客户端java版

    标题“cas客户端java版”指的是在Java环境下使用的CAS客户端库,它允许Java应用与CAS服务器进行集成,从而实现用户认证过程的自动化。 描述中提到,“用于CAS配置应用程序端,将lib下jar文件放到需要整合的应用lib...

    cas单点登陆集成到简单maven项目的全部war包

    - 在pom.xml中添加CAS客户端的依赖,如`cas-client-support-springboot`等。 - 配置`application.properties`或`application.yml`,包含CAS服务器的URL、服务验证URL等相关参数。 3. **编写认证逻辑**: - 创建...

    CAS客户端php版

    - `CAS.php`:主类,包含了与CAS服务器交互的所有方法,如初始化CAS客户端、检查用户是否已经认证、触发SSO过程等。 - `Client.php`:CAS客户端的具体实现,处理与服务器的通信,如发送HTTP请求,解析响应等。 - `...

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

    压缩包中包含的文档将指导你如何配置CAS客户端,包括在Spring或Web.xml中添加必要的配置项,设置服务URL,以及处理TGT(Ticket Granting Ticket)和ST(Service Ticket)。 3. **CAS4.2.7源码**: CAS 4.2.7是CAS...

    cas客户端jar包

    为了在项目中使用CAS客户端,你需要将提供的"客户端jar包"导入到你的Web应用程序的`WEB-INF/lib`目录下。这个目录是Java Web应用存放第三方库(如jar包)的标准位置,Tomcat等Servlet容器会自动扫描该目录下的库并将...

    cas .net客户端的配置代码

    1. **安装CAS客户端库**:通常,我们可以通过NuGet包管理器安装`Castle.Services.Ticket`或`CasClient2`等CAS客户端库。 2. **配置web.config**:在项目的web.config文件中添加相应的CAS配置节。这包括设置CAS...

    Spring Security集成CAS客户端实例

    **Spring Security集成CAS客户端实例详解** 在Web应用中,安全是至关重要的,Spring Security和CAS(Central Authentication Service)是两种广泛使用的安全框架。本实例旨在展示如何将Spring Security与CAS结合,...

    java-cas客户端client安装包

    综上所述,Java CAS客户端提供了一套完整的解决方案,帮助开发者将SSO功能集成到Java应用中,通过与CAS服务器的交互,实现安全的身份验证和授权。正确配置和使用Java CAS客户端,可以显著提高应用程序的安全性和用户...

    CAS的ASP.NET客户端配置及验证

    9. **测试与调试**:创建一个简单的`CASTest`应用,以验证CAS客户端配置是否正确。设置一些受保护的路由或控制器,然后尝试访问,观察是否能正确重定向到CAS登录页面,以及登录后是否能正常访问受保护资源。 在实际...

    cas客户端war包和project源代码

    【标题】"CAS客户端war包与项目源代码详解" CAS(Central Authentication Service)是一个开源的身份验证框架,主要用于实现单点登录(Single Sign-On, SSO)。在这个主题中,我们将深入探讨如何使用CAS作为客户端...

    单点登录cas服务器demo及springboot客户端demo

    总结起来,这个"单点登录cas服务器demo及springboot客户端demo"项目提供了一个实践单点登录概念的实例,涵盖了CAS服务器的搭建、Spring Boot应用的CAS客户端集成,以及Shiro或Pac4j的使用。对于想要学习和理解SSO...

    CAS 客户端所有jar文件

    这个库提供了配置和集成CAS客户端到应用程序的API,例如验证服务票证(Service Ticket),发起代理认证请求(Proxy Granting Ticket)以及生成和解析CAS协议的消息。同时,它还负责处理重定向、URL解码、加密和解密...

    前后端分离集成cas

    6. 集成CAS客户端库,如spring-cas-client,配置CAS服务器地址和相关参数。 7. 在Vue前端实现CAS登录跳转逻辑,处理CAS服务返回的ticket,进行SSO验证。 8. 测试整个系统,确保登录、权限控制和SSO功能正常工作。 ...

    cas服务端和客户端可用代码

    CAS客户端集成在Spring Boot项目中,负责处理与CAS服务端的交互和本地应用的安全控制。主要涉及以下几个方面: 1. **Spring Security**:Spring Boot项目通常使用Spring Security进行安全控制,它支持CAS的集成,...

    单点登录CAS.net客户端源码

    单点登录(Single Sign-On, SSO)是一...此源码提供了一个基础的.NET CAS客户端实现,可以帮助开发者快速集成SSO功能,减少重复的身份验证过程,提升用户体验。不过,具体实现可能需要根据实际项目需求进行调整和优化。

    springboot+security+cas集成demo

    1. **配置CAS客户端**:在Spring Boot应用中,我们需要引入CAS客户端库,例如`spring-security-cas`,并配置相关的CAS服务器地址、服务验证URL等。 2. **配置Spring Security**:在Spring Security的配置类中,设置...

    CAS集成手册(java版

    8. **部署配置**:`web.xml`是Web应用的部署描述符,其中会包含CAS客户端的过滤器和监听器配置,用于拦截用户请求并进行SSO处理。 通过以上组件的协同工作,CAS能够实现高效的身份验证和授权,提升用户体验,同时...

    cas结合 springmvc shiro 单点登录

    2. **CAS客户端配置**:然后,我们需要在SpringMVC应用中配置CAS客户端,包括设置CasServerUrlPrefix(CAS服务器的URL)、serverName(当前应用的URL)等属性,以便应用能够与CAS服务器通信。 3. **Shiro集成**:接...

Global site tag (gtag.js) - Google Analytics