Spring Security整合SOAP服务Tomcat正常WebLogic12c下鉴权失效
问题背景
- 基于Spring Boot搭建示例SOAP Web Service项目,计划集成Okta作为资源服务器实现认证能力
- 项目可成功部署至WebLogic,但使用SOAP UI测试服务时,即使请求头未携带Token也能正常返回响应
- 通过浏览器访问WSDL地址
http://myhost:port/appservice/app.wsdl时会返回401错误,说明安全配置已被加载生效,但SOAP请求的鉴权逻辑未正常触发,无Okta Token也可获取接口响应
待澄清疑问
- 是否需要在Security Config配置类上额外添加拦截器适配SOAP请求,或是SOAP场景下的安全实现路径有误?
- Token校验是否属于WS-Security范畴,仅配置Okta资源服务器的认证管理器是否可满足需求?
- 项目参照Spring官方Web Service搭建指南实现,查阅大量相关技术问题与Spring官方文档仍未定位根因,排查工作陷入停滞
已执行排查操作
- 通过
@EnableWebSecurity(debug=true)注解开启安全调试模式 - 配置日志参数
logging.level.org.springframework.security.web.FilterChainProxy=DEBUG,打印过滤器链执行日志
环境对比验证结果
本地嵌入式Tomcat环境
- 鉴权逻辑运行完全正常:调整打包方式、在POM中排除Tomcat依赖、主类移除
SpringBootServletInitializer与WebApplicationInitializer相关配置后,携带Okta Bearer Token可正常获取响应,无Token则被拦截 - Tomcat环境下请求会完整经过Security Filter Chain的全部过滤器,执行顺序如下:
WebAsyncManagerIntegrationFilterSecurityContextPersistenceFilterHeaderWriterFilterCsrfFilterLogoutFilterBearerTokenAuthenticationFilterRequestCacheAwareFilterSecurityContextHolderAwareRequestFilterAnonymousAuthenticationFilterSessionManagementFilterExceptionTranslationFilterFilterSecurityInterceptor
WebLogic 12c环境
- SOAP请求仅经过过滤器链的前四个过滤器,后续鉴权相关过滤器未执行,最终导致鉴权失效
诉求
- 寻求该问题的具体定位思路与可行解决方案
内容的提问来源于stack exchange,提问作者M S Kulkarni
相关产品推荐
相关产品推荐

