`

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
分享到:
评论

相关推荐

    cas-client:适用于Node.js的CAS客户端中间件的完整实现,支持CAS 1.0、2.0 +,3.0 +协议

    http-cas-client 用于Node.js的CAS客户端中间件的完整实现,支持CAS 1.0、2.0 +,3.0 +协议。 CAS(中央身份验证服务)是Web的单点登录/单点退出协议。 我们假设您已经熟悉CAS协议,如果不熟悉,请在使用前阅读本。...

    CAS 单点登录安装笔记4 -- asp.net client端的设置

    asp.net 与cas结合的实例程序 博文链接:https://lib.iteye.com/blog/166619

    cas-client3.2.1

    cas的客户端服务jar包,需要集成到应用中,并修改相应的web.xml文件

    CAS单点登录demo.rar

    该演示项目将通过简单而清晰的代码示例,演示CAS单点登录的基本原理、配置步骤以及如何集成CAS客户端到你的应用中。 适用人群: 这个资源适用于具有一定Java编程和Web开发经验的开发人员,特别是那些对单点登录和...

    connect-cas2:CAS(中央身份验证服务)客户端的NodeJS实现

    用于Express / Connect的CAS客户端中间件的完整实现,支持CAS 2.0+协议。 CAS(中央身份验证服务)是Web的单点登录/单点退出协议。 我们假设您已经熟悉CAS协议,如果不熟悉,请在使用前阅读本。 安装 npm install...

    CAS-integration:Openroad CAS 集成

    CAS整合 介绍 开路 是开放式协作平台,Openroad 提供一套服务来帮助...与 uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodle 等集成 社区文档和实施支持 广泛的采用者社区 为什么我们需要将 CAS 集成到 Openroa

    cas-client-integration-tools:一小组Servlet过滤器,可帮助将CAS与基于Servlet的企业工具集成

    一些企业工具期望SSO解决方案填充特定的标头以识别用户,而Java CAS客户端却不能立即使用。 同样,通常需要其他“胶水”位来使单次注销正常工作。 如何? 使用Maven吗? 构建此仓库( mvn install ),并将此依赖...

    Roller4.0的另外一套cas简单解决方案

    会影响其他与其共存的与cas集成的系统.这让我好郁闷.这哪里是系统啊..怎么像病毒啊.会导致我其他访问cas的系统无法在得到从cas返回的用户名验证.晕倒. 我的解决方法是直接更改它的登陆页面链接.和登陆链接. 首先...

    angularjs-cas-client

    这是基于Angular JS的CAS客户端的简单演示。 假设我们有一个位于https://localhost:8443/cas的CAS服务器。 我们在以下位置有一个基于REST的Web服务: https://localhost:8443/library具有以下两个操作: GET /api...

    cas-server:单点登录服务端

    单点登录是企业业务整合...与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成 cas server: cas client: CAS官网地址: cas服务端需要单独部署,本篇主要为服务端教程,主要围绕环境、本地构建、改造以及运

    sso:cas单点登录系统,其中包括cas认证服务,配置中心,监控平台,服务管理的高可用项目

    客户端集成(cas client,pac4j,shiro) 并且在博客中记录整个建造过程以及注意事项,目前教程如下: 特性 Docker快速启动 GitHub授权登录 Cas Clint,Shiro Pac4j客户集成 jdbc用户密码加密 自定义主题 配置统一...

    JAVA上百实例源码以及开源项目源代码

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    Central-Authentication-Server:需要Tomcat服务器

    与 uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodle 等集成 社区文档和实施支持 广泛的采用者社区 建造 建议使用在本地构建和部署 CAS。 这种方式不需要采用者明确下载任何版本的 CAS,而是利用 Maven 的...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    bb-browser:用于探索操作缓存内容可寻址存储的Web前端

    Buildbarn Browser是用Go语言编写的简单Web服务,可以显示存储在所使用的Content Addressable Storage(CAS)和Action Cache(AC)中的对象。 该页面的主要目的是更深入地了解远程执行的工作原理,尤其是在构建失败...

    spring security 参考手册中文版

    32.3 CAS客户端的配置 244 32.3.1服务票据认证 244 32.3.2单一注销 246 32.3.3使用CAS认证无状态服务 249 配置CAS以获取代理授予票证 249 使用代理票证调用无状态服务 250 32.3.4代理票证认证 251 33. X.509认证 253...

    java开源包1

    Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分...

    java开源包11

    Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分...

    java开源包2

    Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分...

Global site tag (gtag.js) - Google Analytics