【问题标题】:How to bypass Authorization in Swagger UI using springfox如何使用 springfox 在 Swagger UI 中绕过授权
【发布时间】:2019-06-30 08:42:17
【问题描述】:

当请求来自 Swagger-UI,测试环境时,我需要绕过 Spring Security。这样我们就可以快速测试,而不必每次都生成新的令牌,因为无论如何都要测试数据。

我的应用程序正在 Spring Boot 上运行。我实现了 Spring 安全性,因此用户必须提供有效的访问令牌(标头)才能获得有效的响应,否则应用程序将返回 HTTP 401。它与 Spring Fox 配合得很好,但我需要一种方法来关闭或在至少在授权中提供一个静态令牌,这样测试人员就不必为每个请求都这样做。

我尝试查看他们的文档,希望找到一个开关,特别是当请求来自 Swagger UI 时将其关闭。

我正在使用: -Springboot 2.0.3 -springfox 2.8.0

【问题讨论】:

  • 使用配置文件我们可以让事情正常工作...... spring.profiles.active=swagger ....并分别使用 webscurity 和 swagger 安全配置,并允许所有 url 在 swagger 配置安全
  • 是的,我正在使用 spring 配置文件,但我只需要绕过传入的请求以进行招摇,如果用户将使用休息客户端,即:邮递员,他们应该被要求提供身份验证标头,因为请求不是来自招摇。因此对于 spring.profiles.active=swagger,允许来自 swagger 的请求,但需要其他所有内容的授权。我在 C# 框架中看到这项工作,希望 Springfox 具有类似的功能。
  • 从设计的角度来看,我认为这没有意义。如果您允许用户访问资源而无需通过 swagger 进行身份验证,那么当他们从邮递员或其他方式访问应用程序时,您为什么要保护他们。我认为使用配置文件的建议是正确的,然后有 2 种不同的构建,一种可能在 dev 中所有内容都打开,另一种像 QA 和更高的环境一样安全。

标签: java spring-boot swagger-ui springfox


【解决方案1】:

使用这个....

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })

否则

@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
    http.authorizeExchange().anyExchange().permitAll();
    return http.build();
}

【讨论】:

    猜你喜欢
    • 2020-08-19
    • 2020-11-27
    • 2022-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多