使用Swagger进行身份验证登录

时间:2017-06-08 03:13:23

标签: java spring spring-mvc spring-boot swagger

我正在使用Swagger UI进行交互式REST端点表示。但是,知道其URL的每个人都可以访问Swagger UI。是否有任何标准方法可以通过用户登录来限制Swagger UI访问。

<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger2</artifactId> 
    <version>LATEST</version> 
</dependency> 
<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger-ui</artifactId> 
    <version>LATEST</version> 
</dependency> 
<dependency> 
    <groupId>io.swagger</groupId> 
    <artifactId>swagger-jersey2-jaxrs</artifactId> 
    <version>LATEST</version> 
</dependency>

1 个答案:

答案 0 :(得分:1)

不,这超出了招摇的关注范围。您只需使用普通WebSecurityConfigurerAdapter来控制swagger-ui.html网址的权限即可。如果您使用不同的方法配置安全IMO,也会非常混乱。

实施例

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/swagger-ui.html")
        .access("hasRole('ROLE_ADMIN')");
     }
}

但是,如果您不想基于URL进行安全保护,那么您可以同样依赖基于控制器的安全性,以及服务的安全性(如果他们参与但是他们不在这个案例。安全性非常适用于应用程序。我不能这样说,你甚至可能根本不想使用Spring Security,只是做自己的事情,它只是让你的生活更轻松的另一个框架,你可以很容易访问swagger-ui.html视图的视图解析器中的当前登录用户,并抛出未经授权的异常或类似内容。