今天把most-sso-client集成进开发框架,遇到了一些问题,把解决的过程记录一下
most-sso-client是基于CAS Client的二次封装(是另外一个项目组做的,不知道是出于什么目的进行再次封装)
1、jar包冲突
首先把most-sso-client引入开发框架以后,跑起来报ClassNotFoundException。看到是报StringUtils没找到,检查工程路径里,已经有了commons-lang3-3.1.jar,不过包名是org.apache.commons.lang3
想了想这个MOST SSO是好几年前的代码,那个时候应该commons-lang的版本应该还是比较旧的。所以就找到了most-sso-client.jar的原始工程,删除旧的jar包依赖,引入新的jar包依赖,重新编译得到most-sso-client.jar
将新的jar包引入工程之后,问题解决
2、配置文件路径不对
封装后的MOST SSO,依赖一个配置文件,我将它放在classpath下,居然找不到,也是看了下源码,发现路径写死为filepath,不支持classpath,所以顺手把寻找配置文件路径部分的代码也改了下,采用spring风格的file:和classpath:前缀
重新又打了个jar包,问题解决
3、Filter顺序错误
感觉配置都对了,但是SSO就是不生效。只好打了个断点跟进去,发现完全就没走进SSO Filter
想了一下发现,是web.xml配置错误,把Struts2 Filter放到了CAS Filter前面
Struts2 Filter不会继续调用filterChain.doFilter()方法,所以CAS Filter就没机会拦截了
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
try {
prepare.setEncodingAndLocale(request, response);
prepare.createActionContext(request, response);
prepare.assignDispatcherToThread();
if ( excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
chain.doFilter(request, response);
} else {
request = prepare.wrapRequest(request);
ActionMapping mapping = prepare.findActionMapping(request, response, true);
if (mapping == null) {
boolean handled = execute.executeStaticResourceRequest(request, response);
if (!handled) {
chain.doFilter(request, response);
}
} else {
execute.executeAction(request, response, mapping);
}
}
} finally {
prepare.cleanupRequest(request);
}
}
所以需要把CAS Filter配到Struts2 Filer的前面,就没问题了
由于servlet规范的规定,配置Filter的时候,一定要注意顺序的问题
分享到:
相关推荐
综上所述,SSO的实现虽然看似简单,但在具体实施过程中却需要考虑多种因素,包括应用架构、认证机制、会话管理以及跨平台兼容性等。通过精心设计和细致的配置,SSO不仅能够显著提升用户体验,还能有效增强系统的整体...
SSO单点登录解决方案 SSO(Single Sign-On)单点登录解决方案旨在提供一个统一的身份验证入口,满足集团多个成员网站的身份验证需求。该方案的主要目标是实现单点登录,提高用户体验,降低成员网站的登录负载,并...
SSO(Single Sign-On)单点登录解决方案是当前企业应用系统中最常用的身份验证机制之一。该解决方案的设计流程图将会详细介绍 SSO 的实现机制、时序图、数据库设计、程序实现和修改、Cookie 和 Redis 的使用、相关 ...
在本方案中,我们将探讨如何实现一个基于Redis的SSO解决方案。 首先,我们需要理解SSO的工作原理。SSO的核心是中央认证服务(CAS),它负责处理用户的登录请求并生成一个安全的票据(Ticket Granting Ticket, TGT)...
这意味着用户应该能够流畅地在多个系统间切换,而不应感觉到登录过程的存在。这要求SSO机制与前端设计紧密集成,确保用户界面的一致性和直观性。 #### 结论 综上所述,WebLogic Server结合SAML协议的SSO解决方案为...
SSO实现的过程通常包括以下步骤: 1. **用户访问应用**:用户尝试访问一个需要SSO认证的应用。 2. **重定向到IdP**:如果用户未登录,应用会将请求重定向到SSO的身份提供者。 3. **身份验证**:在IdP,用户输入登录...
SSO(Single Sign-On)单点登录是一种身份验证机制,允许用户在多个相互关联的应用系统中只需要登录一次,即可访问所有系统,而无需再次输入凭证。在这个“SSO_same_domain”主题中,我们关注的是同一域名下的SSO...
.NET SSO解决方案主要涉及到的是如何在多个应用系统之间实现单点登录(Single Sign-On),这是一种让用户在访问由多个独立系统组成的企业级应用时只需要登录一次的技术。在ASP.NET MVC框架下,SSO可以帮助提高用户...
4. **跨域支持**:实现SSO的关键挑战之一是跨域问题。源码可能包含了处理不同域之间的票据传递的技术,例如使用隐藏的IFrame或者设置P3P头来实现跨域Cookie。 5. **会话管理**:在SSO环境中,会话管理需要特别注意...
XXL-SSO 1.1.0 是一个专为初学者设计的简单单点登录(Single Sign-On,简称SSO)系统示例。这个项目是基于Maven构建的,适用于那些想要学习如何实现SSO功能的开发者。通过将源代码导入Eclipse等开发工具,用户可以...
《Microsoft Office SharePoint Server 2007 Single Sign On 配置管理开发图解.pdf》这份文档很可能详细介绍了SharePoint 2007中的SSO配置过程,包括步骤、最佳实践和常见问题解决方案,是学习和实施SharePoint SSO...
在本文中,我们将深入探讨基于Spring Boot、MyBatis和Redis实现的SSO解决方案——Smart-SSO。 Smart-SSO是一个开源项目,旨在为Spring框架的系统提供快速、便捷的SSO集成方案。它利用了Spring Boot的简化开发特性,...
通过使用Redis或MySQL作为认证服务器,该项目提供了解决SSO问题的一种方案。 1. **单点登录原理**: SSO的核心是中央认证服务(Central Authentication Service,CAS),用户只需向CAS提交一次凭证(如用户名和...
同时,调试工具和日志记录可以帮助理解并解决可能出现的问题。 10. **部署与配置**:SSO系统通常需要在生产环境中进行特定的配置,例如设置CAS服务器地址、调整票据有效期、配置信任关系等。 通过以上讲解,我们...
在实现SSO的过程中,通常会涉及到以下几个核心概念: 1. **认证中心(Identity Provider, IDP)**:SSO的核心组件,负责用户的验证工作。当用户尝试访问受保护资源时,会被重定向到IDP进行身份验证。一旦验证成功,...
SSO的核心思想是将用户认证过程集中管理,当用户成功登录到一个“认证中心”后,可以在其他已集成的系统中无缝漫游。这减少了用户的登录负担,提高了用户体验,并且有助于企业统一管理和保护用户账户安全。 SSO的...