具有 SOAP Web 服务的 Spring Security 可在 Tomcat 中运行,但不能在 WebLogic 中运行

2024-01-12

我创建了一个示例 SOAP Web 服务项目(spring boot)并尝试将 Okta 集成为资源服务器以进行身份​​验证。

我能够将应用程序部署到 WebLogic,但是当使用 SOAP UI 测试服务时,即使标头中没有包含令牌,它也会给出响应。

当我使用 wsdl url http://myhost:port/appservice/app.wsdl 从浏览器访问 WSDL 时,我看到 401 错误,因此我认为它正在获取安全配置​​更改。但它不适用于 SOAP 请求,即使没有 Okta 令牌我也会得到响应。

是否因为对于 SOAP 请求,我是否需要在安全配置 java 文件顶部包含任何拦截器?或者我是否采用了错误的 SOAP 安全路径?有人可以让我知道我错过了什么或指出我正确的方向吗?令牌验证是 WS-Security 的一部分吗?或者 Okta 资源服务器中的身份验证管理器足以满足此目的吗?

我跟着这个文档 https://spring.io/guides/gs/producing-web-service/#scratch创建它。

我已经阅读了与此和 spring 文档相关的大部分 SO 问题,但无法连接缺失的点。请在这件事上给予我帮助。花了很多时间后,我感觉自己在兜圈子。

UPDATE:我通过执行以下操作启用了 spring security 调试日志

  1. @EnableWebSecurity(调试=true)
  2. logging.level.org.springframework.security.web.FilterChainProxy=调试

UPDATE2:我没有对我的配置进行任何大的更改,但是当我在本地嵌入式 tomcat 上运行该项目时,它开始工作。为了在 Tomcat 上运行,我将打包从 war 更改为 jar,在我的 POM 和 Main 类中排除了 Tomcat,我必须删除 SpringBootServletInitializer 和 WebApplicationInitializer。就是这样。我使用 Okta 不记名令牌测试了 SOAP UI,它给了我响应。没有令牌,它没有给我回应。

Spring Security 仅在 WebLogic12c 中不起作用。我不知道我缺少什么才能在 WebLogic 中工作。当通过 Tomcat 部署时,请求会通过安全过滤器链中的所有 bean 传递 { WebAsyncManager集成过滤器, 安全上下文持久性过滤器, 标头写入器过滤器, Csrf过滤器, 注销过滤器, BearerTokenAuthenticationFilter, 请求缓存感知过滤器, SecurityContextHolderAwareRequestFilter, 匿名身份验证过滤器, 会话管理过滤器, 异常翻译过滤器, 过滤器安全拦截器}

但在 WebLogic 上,请求仅通过安全过滤器链 {WebAsyncManagerIntegrationFilter, 安全上下文持久性过滤器, 标头写入器过滤器, Csrf过滤器}


为了完整起见,我只是想更新为此问题找到的替代解决方案。 Spring Security 过滤器链不适用于 Weblogic,而在 Tomcat 中也适用,甚至适用于 Weblogic 版本 12.2.1.4。

我已经遵循了这个example https://github.com/okta/samples-java-servlet/tree/master/resource-server,并实现了 Okta 过滤器,因为 Spring Boot 版本在 Weblogic 12.2.1.4 中不起作用。

感谢@Toerktumlare,我已经使用 logback-spring.xml 实现了日志记录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有 SOAP Web 服务的 Spring Security 可在 Tomcat 中运行,但不能在 WebLogic 中运行 的相关文章

随机推荐