【问题标题】:How do I disable csrf protection for springfox Swagger UI without Spring Security or Spring Boot?如何在没有 Spring Security 或 Spring Boot 的情况下禁用 springfox Swagger UI 的 csrf 保护?
【发布时间】:2020-01-21 06:21:45
【问题描述】:

我们有一个使用 Spring MVC 的 REST API,它不使用 Spring Security 或 Spring Boot。其余 API url 为{domain}/product/rest/v1/{controller}。我们还有一个使用 Struts2 的常规 Web GUI,它位于 {domain}/product/{action}。

我们目前正在研究使用 Springfox-swagger 和 springfox-swagger-ui 自动生成 API 文档。使用最少的配置让 Swagger 工作相当容易,但问题是 Springfox 默认尝试执行 CRSF 令牌请求,我们在其余 API 中不使用它。我已经用谷歌搜索了如何禁用它,但我能找到的每一篇文章都谈到了如何使用 Spring Security WebSecurityConfigurationManager 禁用它。我们不使用 Spring Security,也不想添加它。

有没有办法在不使用 Spring Security 或 Spring Boot 的情况下禁用 Springfox Swagger UI CSRF 令牌检查?

【问题讨论】:

  • 你确定你没有使用 spring-security 吗?请检查依赖树以确认,也许您的某些依赖项使用了它。
  • @RMachnik 不,我们不使用它。在 Ivy 管理的依赖项列表中的任何地方都找不到 Spring-Security。我们有 aop、bean、context、context-support、core、expression、jcl、oxm、plugin-core、plugin-metadata、test、web 和 webmvc,所有版本均为 5.06(插件为 1.2.0)。 Springfox是core、schema、spi、spring-web、swagger-common、swagger-ui、swagger2,都是2.9.2版本。

标签: spring swagger-ui swagger-2.0 springfox


【解决方案1】:

要禁用 csrf(),您需要在项目中添加 spring 安全性,请按照这些链接如何在 spring 中禁用 csrf()。

https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/csrf.html

【讨论】:

  • 正如我所说,我希望有一种不涉及向我们的项目添加 spring-security 的方法,因为我们不知道这会对我们的身份验证等其他方面产生什么影响和授权。另外,这是 Springfox 这样做的,所以我希望有一种方法可以在 springfox 端禁用它。
  • 对于身份验证,您正在使用此接口“org.springframework.security.authentication”或者什么??如果您已经在使用此接口,那么您应该调用 WebSecurityConfigurerAdapter 类来禁用 csrf()。
  • 我没有使用 Spring 开箱即用的任何东西,我使用的是自定义编写模块(我们的应用程序早于 Spring Security),它本质上是一个过滤器,用于检查当前会话是否包含对象它会在您登录时添加到您的会话中。它使用的只是一个带有您当前会话 ID 的 cookie(是的,我知道它不是无状态的,但我们决定使用 API 密钥之类的东西超出了范围)。
猜你喜欢
  • 2018-09-13
  • 2017-05-01
  • 1970-01-01
  • 2018-01-27
  • 2016-01-12
  • 2020-10-27
  • 2016-09-01
  • 1970-01-01
相关资源
最近更新 更多