最近接手了一些使用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类实例对象也只好这样将就将就了
总结完毕,欢迎大家拍砖
分享到:
相关推荐
注:图中代码段仅作为思路理解 直接copy当然是不可以的喔">关于SSO的思路 csdn和cnblog中都有许多大牛给出了解释 此图是在学习了 韩星 的 基于 Net的单点登录 SSO 解决方案 基础上做的个人总结(顺序图) 小弟初探 ...
所有应用系统能够识别和提取Token信息要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户。应用系统应该能对Token进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登录过...
详细描述了SSO的解决方案,让您初步认识到SSO的方案设计
一个sso的解决方案
SSO单点登录解决方案,描述典型的SSO方案及原理
在接入PHPSSO的多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。PHPSSO可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制,是目前比较流行的企业业务整合的解决方案之一。
SSO Agent 负责管理操作员的登录/退出流程,操作员在应用中的SSO 的Session管理,并具SSO Agent 负责收接应用发送过的操作员登录,退出等信息交给应用进行处理。这种方式对应用接入的开发来说,优点是开发工作量比较...
一个实现SSO方案的构想SSO单点登陆解决方案
SSO解决方案--提醒:文档只是作为一个基础的参考,愿意了解的朋友可以随时咨询。 第一节:单点登录简介 第一步:了解单点登录 SSO主要特点是: SSO应用之间使用Web协议(如HTTPS),并且只有一个登录入口. SSO的...
sso_统一身份认证及访问控制解决方案
tomcat 配置 SSO解决方案,验证通过。
WebLogic平台的Web SSO(SAML)解决方案
SSO Agent 负责管理操作员的登录/退出流程,操作员在应用中的SSO 的Session管理,并具SSO Agent 负责收接应用发送过的操作员登录,退出等信息交给应用进行处理。这种方式对应用接入的开发来说,优点是开发工作量比较...
2. Loong SSO支持 客户端 跨服务器、跨域名、跨应用、跨开发语言 3. SSO客户端调用, 支持各种 能用于WEB开发的 语言(比如 perl、PHP、Ruby、Python、Java)等等语言 4. SSO客户端开发简单,修改量非常小。 只要修改...
spring boot整合spring security 实现SSO单点登陆 完整DEMO. 1、配置本地hosts 127.0.0.1 sso-login 127.0.0.1 sso-resource ...3、访问http://sso-taobao:8083/client1/ 或 http://sso-tmall:8084/client2/
sso统一身份认证和访问控制解决实施计划方案.doc
3) 如果验证通过,则从映射表中取出该用户所有能访问的应用系统,显示在sso登录成功页面。转向登录成功页面之前,将该用户所有能访问应用系统的实际用户名都放到cookie中(从映射表中获得)。也就是说,该用户能...