这一段时间有同事在问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>
相关推荐
http-cas-client 用于Node.js的CAS客户端中间件的完整实现,支持CAS 1.0、2.0 +,3.0 +协议。 CAS(中央身份验证服务)是Web的单点登录/单点退出协议。 我们假设您已经熟悉CAS协议,如果不熟悉,请在使用前阅读本。...
asp.net 与cas结合的实例程序 博文链接:https://lib.iteye.com/blog/166619
CAS 是建立在开放的协议之上的,支持多层 SSO 能力,能够与多种语言和平台集成。 CAS 的总体架构包括 CAS 服务器和 CAS 客户端两个部分。CAS 服务器是一个基于 Java 的 Web 应用程序,使用 Spring 技术,支持 ...
cas的客户端服务jar包,需要集成到应用中,并修改相应的web.xml文件
该演示项目将通过简单而清晰的代码示例,演示CAS单点登录的基本原理、配置步骤以及如何集成CAS客户端到你的应用中。 适用人群: 这个资源适用于具有一定Java编程和Web开发经验的开发人员,特别是那些对单点登录和...
用于Express / Connect的CAS客户端中间件的完整实现,支持CAS 2.0+协议。 CAS(中央身份验证服务)是Web的单点登录/单点退出协议。 我们假设您已经熟悉CAS协议,如果不熟悉,请在使用前阅读本。 安装 npm install...
CAS整合 介绍 开路 是开放式协作平台,Openroad 提供一套服务来帮助...与 uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodle 等集成 社区文档和实施支持 广泛的采用者社区 为什么我们需要将 CAS 集成到 Openroa
一些企业工具期望SSO解决方案填充特定的标头以识别用户,而Java CAS客户端却不能立即使用。 同样,通常需要其他“胶水”位来使单次注销正常工作。 如何? 使用Maven吗? 构建此仓库( mvn install ),并将此依赖...
会影响其他与其共存的与cas集成的系统.这让我好郁闷.这哪里是系统啊..怎么像病毒啊.会导致我其他访问cas的系统无法在得到从cas返回的用户名验证.晕倒. 我的解决方法是直接更改它的登陆页面链接.和登陆链接. 首先...
这是基于Angular JS的CAS客户端的简单演示。 假设我们有一个位于https://localhost:8443/cas的CAS服务器。 我们在以下位置有一个基于REST的Web服务: https://localhost:8443/library具有以下两个操作: GET /api...
单点登录是企业业务整合...与uPortal,Liferay,BlueSocket,Moodle,Google Apps等集成 cas server: cas client: CAS官网地址: cas服务端需要单独部署,本篇主要为服务端教程,主要围绕环境、本地构建、改造以及运
客户端集成(cas client,pac4j,shiro) 并且在博客中记录整个建造过程以及注意事项,目前教程如下: 特性 Docker快速启动 GitHub授权登录 Cas Clint,Shiro Pac4j客户集成 jdbc用户密码加密 自定义主题 配置统一...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
与 uPortal、BlueSocket、TikiWiki、Mule、Liferay、Moodle 等集成 社区文档和实施支持 广泛的采用者社区 建造 建议使用在本地构建和部署 CAS。 这种方式不需要采用者明确下载任何版本的 CAS,而是利用 Maven 的...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Buildbarn Browser是用Go语言编写的简单Web服务,可以显示存储在所使用的Content Addressable Storage(CAS)和Action Cache(AC)中的对象。 该页面的主要目的是更深入地了解远程执行的工作原理,尤其是在构建失败...
MaxKey(马克思的钥匙)用户单点登录认证系统(Sigle Sign On System),寓意是最大钥匙,是业界领先的企业级IAM身份管理和身份认证产品,支持OAuth 2.0/OpenID Connect、SAML 2.0、JWT、CAS等标准化的开放协议,提供...
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...
Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java类库 ftp4j ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分...