最近接手了一些使用CAS,单点登陆的几个项目,项目进行挺顺利,没想到在最后创建这几个项目的索引页(索引项目)并抓取各子项目的信息内容的时候,需要穿过cas的filter和子项目的filter,现将思路整理一下。
1.穿过cas,修改casclient的源代码,重新打jar包发布到子应用下,意在调用该项目的接口的时候,不被CAS客户端拦截
casPassUrl =
config.getInitParameter(
"edu.yale.its.tp.cas.client.filter.passUrl");
/** 在init方法中增加,获取一串允许通过的url路径,用逗号分隔*/
/**在dofilter中增加一下代码*/
String[] strs = casPassUrl.split(",");
for(int i=0;i<strs.length;i++){
if(temp.startsWith(strs[i])){
fc.doFilter(request, response);
return ;
}
}
这样可以使不希望被拦截的请求,顺利通过cas
2.穿过子项目的loginFilter,跟上面的类似,也是得增加一个穿过的url路径,在filter加判断
if(request.getRequestURI().startsWith(passUrl)){
bool = true;
}
if(!bool){
String script = "<script>window.location=\""+contextPath+"/\"</script>";
response.getWriter().print(script);
}else{
chain.doFilter(req, res);
}
这样两步走就可以实现希望一个请求在不需要登陆的情况下就可以直接穿过cas和子项目的filter
后来又扩展了想了想,如果请求的路径比较多,每一个路径都需要配置2份那岂不是很麻烦,或者你请求的处理类需要登陆的信息怎么办
个人感觉还是在子项目的过滤器中增加一个登陆步骤,当然是必须已经通过了cas的用户验证了
public void setSessionUser(HttpSession session,String casUserName){
ServletContext servletContext = session.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(servletContext);
UserService userService = (UserService)wac.getBean("userService");
UserVo user = userService.getUserbyName(casUserName);
UserVo mUser = userService.getMUserByDepId(user.getDep().getId()+"");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
Date now = new Date();
session.setAttribute("user", user);
session.setAttribute("mUser", mUser);
session.setAttribute("year", sdf.format(now));
}
由于项目是使用spring,在filter中获取service类实例对象也只好这样将就将就了
总结完毕,欢迎大家拍砖
分享到:
相关推荐
单点登录(Single Sign-On,简称SSO)是一种网络应用中的身份验证机制,它允许用户在一次登录后,能够在多个相互关联的应用系统中自由切换,而无需再次输入认证信息。SSO的核心思想是通过共享同一份认证信息,使得...
本项目提供了一款基于C#编写的SSO组件源码,其设计思路类似于微软的认证服务器和Web应用服务器,能够实现跨域和跨服务器的身份验证。 首先,理解C#中的SSO实现原理至关重要。SSO的核心在于票据(Ticket)的概念,当...
### ASP.NET跨域SSO解决方案 #### 一、引言 在现代企业级应用开发中,随着业务系统越来越复杂,各个子系统之间的交互也日益频繁。为了提高用户体验并简化管理流程,单点登录(Single Sign-On,简称SSO)成为了一个...
### 单点登录SSO解决方案之SpringSecurity+JWT实现 #### 一、单点登录(SSO)概述 单点登录(Single Sign-On,简称SSO)是一种认证机制,允许用户仅通过一次登录就能访问同一域下的多个应用程序和服务。这种机制...
SSO是一种允许用户在一次登录后就能访问多个应用程序的技术,它提高了用户体验并简化了身份验证管理。 描述中提到,朋友的phpcms在配置SSO登录时遇到了通信失败的情况,具体表现为服务器上的Linux系统无法通过域名...
在现代Web开发中,用户经常在多个网站之间切换,例如从电子商务网站跳转到社交媒体平台,期望能够保持一致的登录状态,这就是跨站登录(Single Sign-On, SSO)的需求。本文将详细介绍在ASP.NET MVC中实现简单跨站...
### CAS实现内外网映射访问的解决办法 随着企业信息化程度的提高,越来越多的企业开始采用统一身份认证系统(CAS)来管理内部应用系统的用户登录。然而,在实际的应用场景中,经常会遇到这样的问题:项目需要同时支持...
SSO(Single Sign-On)单点登录是一种网络身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。这种技术简化了用户体验,同时也提供了集中化的身份管理和安全控制。 **1. 引言** ...
单点登录(SSO,Single Sign-On)是一种网络身份验证技术,允许用户在一次登录后访问多个相互信任的应用系统,而无需再次输入凭证。本文将详细介绍SSO的基本概念及其二级域名和跨域的实现方式。 SSO的核心在于提供...
在IT领域中,单点登录(Single Sign-On,简称SSO)是一种常用的身份验证方法,它允许用户通过一次登录即可访问多个系统或服务而无需重复输入凭证。这种机制极大地提升了用户体验,并增强了系统的安全性。本文将根据...
SSO(Single Sign-On)是单点登录的缩写,是一种网络访问控制机制,允许用户在一次登录后,就可以在多个应用系统中自由切换,而无需再次进行身份验证。基于PHP实现SSO,主要是利用了PHP的session管理和HTTP请求功能...
SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。本概要设计说明书主要针对SSO的实现进行详细阐述,旨在提高用户体验,简化企业内部或...
为了实现跨应用SSO,需要确保所有相关应用使用相同的密钥。 - 示例配置: ```xml ``` - 通过这种方式,即使用户在不同的虚拟目录或子目录下切换,只要初始登录成功,之后的所有请求都将自动携带有效的认证信息...
单点登录(Single Sign-On,简称SSO)是现代企业业务整合中的一种流行解决方案,它允许用户在多个相互信任的应用系统中只需要登录一次即可访问所有系统,大大提高了用户体验和企业内部效率。SSO英文全称SingleSignOn...
SSO允许用户在多个服务和应用系统中只需进行一次登录验证,便可以获得对所有系统的访问权限。而可跨域的SSO解决方案则进一步解决了不同域名下的系统认证问题,使得用户跨域使用服务时也能实现统一的身份验证和授权。...
ADSSO允许用户通过一次登录即可访问多个系统,提高了用户体验和安全性。WMI是Windows操作系统中的一个核心组件,用于远程管理和监控系统状态。 **3. 应用场景** 可能包括企业网络环境中的常见应用场景,例如,如何...
【描述】:这份文档是深信服公司为用户提供的关于SANGFOR AC SG v11.0版本的城市热点单点登录(Single Sign-On, SSO)配置的详细指南,旨在帮助管理员有效地设置和管理网络环境中的SSO功能。 【知识点】: 1. **...
.NET单点登录(Single Sign-On, SSO)是一种让用户在多个相关应用系统中只需要登录一次就能访问所有系统的机制。在.NET环境下实现SSO,主要涉及以下几个关键步骤和知识点: 1. **系统架构**:通常,SSO系统由一个...
SSO(Single Sign-On)是一种身份验证机制,允许用户在一个应用系统中登录后,无需再次认证即可访问其他关联的应用系统。这种技术在大型企业或拥有多个子系统的网站中非常常见,提高了用户体验并简化了管理。在B站...