这一段时间有同事在问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>
相关推荐
在IT行业中,集成Spring、Spring Web MVC和CAS客户端是一项常见的任务,主要用于构建安全的Web应用程序。下面将详细解释这些技术及其整合过程。 首先,Spring是一个开源的Java框架,它简化了开发过程,提供了依赖...
标题“cas客户端java版”指的是在Java环境下使用的CAS客户端库,它允许Java应用与CAS服务器进行集成,从而实现用户认证过程的自动化。 描述中提到,“用于CAS配置应用程序端,将lib下jar文件放到需要整合的应用lib...
- 在pom.xml中添加CAS客户端的依赖,如`cas-client-support-springboot`等。 - 配置`application.properties`或`application.yml`,包含CAS服务器的URL、服务验证URL等相关参数。 3. **编写认证逻辑**: - 创建...
- `CAS.php`:主类,包含了与CAS服务器交互的所有方法,如初始化CAS客户端、检查用户是否已经认证、触发SSO过程等。 - `Client.php`:CAS客户端的具体实现,处理与服务器的通信,如发送HTTP请求,解析响应等。 - `...
压缩包中包含的文档将指导你如何配置CAS客户端,包括在Spring或Web.xml中添加必要的配置项,设置服务URL,以及处理TGT(Ticket Granting Ticket)和ST(Service Ticket)。 3. **CAS4.2.7源码**: CAS 4.2.7是CAS...
为了在项目中使用CAS客户端,你需要将提供的"客户端jar包"导入到你的Web应用程序的`WEB-INF/lib`目录下。这个目录是Java Web应用存放第三方库(如jar包)的标准位置,Tomcat等Servlet容器会自动扫描该目录下的库并将...
1. **安装CAS客户端库**:通常,我们可以通过NuGet包管理器安装`Castle.Services.Ticket`或`CasClient2`等CAS客户端库。 2. **配置web.config**:在项目的web.config文件中添加相应的CAS配置节。这包括设置CAS...
9. **测试与调试**:创建一个简单的`CASTest`应用,以验证CAS客户端配置是否正确。设置一些受保护的路由或控制器,然后尝试访问,观察是否能正确重定向到CAS登录页面,以及登录后是否能正常访问受保护资源。 在实际...
**Spring Security集成CAS客户端实例详解** 在Web应用中,安全是至关重要的,Spring Security和CAS(Central Authentication Service)是两种广泛使用的安全框架。本实例旨在展示如何将Spring Security与CAS结合,...
综上所述,Java CAS客户端提供了一套完整的解决方案,帮助开发者将SSO功能集成到Java应用中,通过与CAS服务器的交互,实现安全的身份验证和授权。正确配置和使用Java CAS客户端,可以显著提高应用程序的安全性和用户...
【标题】"CAS客户端war包与项目源代码详解" CAS(Central Authentication Service)是一个开源的身份验证框架,主要用于实现单点登录(Single Sign-On, SSO)。在这个主题中,我们将深入探讨如何使用CAS作为客户端...
这个库提供了配置和集成CAS客户端到应用程序的API,例如验证服务票证(Service Ticket),发起代理认证请求(Proxy Granting Ticket)以及生成和解析CAS协议的消息。同时,它还负责处理重定向、URL解码、加密和解密...
单点登录(Single Sign-On, SSO)是一...此源码提供了一个基础的.NET CAS客户端实现,可以帮助开发者快速集成SSO功能,减少重复的身份验证过程,提升用户体验。不过,具体实现可能需要根据实际项目需求进行调整和优化。
总结起来,这个"单点登录cas服务器demo及springboot客户端demo"项目提供了一个实践单点登录概念的实例,涵盖了CAS服务器的搭建、Spring Boot应用的CAS客户端集成,以及Shiro或Pac4j的使用。对于想要学习和理解SSO...
1. **配置CAS客户端**:在Spring Boot应用中,我们需要引入CAS客户端库,例如`spring-security-cas`,并配置相关的CAS服务器地址、服务验证URL等。 2. **配置Spring Security**:在Spring Security的配置类中,设置...
8. **部署配置**:`web.xml`是Web应用的部署描述符,其中会包含CAS客户端的过滤器和监听器配置,用于拦截用户请求并进行SSO处理。 通过以上组件的协同工作,CAS能够实现高效的身份验证和授权,提升用户体验,同时...
2. **CAS客户端配置**:然后,我们需要在SpringMVC应用中配置CAS客户端,包括设置CasServerUrlPrefix(CAS服务器的URL)、serverName(当前应用的URL)等属性,以便应用能够与CAS服务器通信。 3. **Shiro集成**:接...
这两个JAR文件可以直接添加到Java项目的类路径中,以便在程序中引用和使用Cas客户端的相关功能。 5. **集成Cas客户端**: 在Java项目中,为了使用这些JAR包,你需要将它们加入到构建路径或依赖管理中,如Maven或...
6. 集成CAS客户端库,如spring-cas-client,配置CAS服务器地址和相关参数。 7. 在Vue前端实现CAS登录跳转逻辑,处理CAS服务返回的ticket,进行SSO验证。 8. 测试整个系统,确保登录、权限控制和SSO功能正常工作。 ...