2 years ago

#62092

test-img

Sampeteq

Spring Security login/logout Swagger

How to get login/logout option in Swagger? After app starting I can click on the secure endpoint and I'm asked about my credentials. After successfully logging all works with no problem but I don't have option in Swagger to logout to change user. I can only use localhost:8080/logout. I get a proper communicate I'm logout but when I go again on localhost:8080/swagger-ui/ I'm still logged on the previous user. I want to get some just like that: Swagger example

My Spring Security config:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
class SecurityConfig extends WebSecurityConfigurerAdapter {

private static final String[] permitAllEndpoints = {

        "/api/registration",
        "/h2/console/**",
        "/v2/api-docs",
        "/v3/api-docs/**",
        "/swagger-resources/**",
        "/swagger-ui/**"
};

@Override
protected void configure(HttpSecurity http) throws Exception {

    http
            .httpBasic()
            .and()
            .formLogin()
            .permitAll()
            .and()
            .logout()
            .permitAll()
            .and()
            .authorizeRequests()
            .mvcMatchers(permitAllEndpoints)
            .permitAll()
            .mvcMatchers("api/admin/**")
            .hasAnyAuthority("ADMIN")
            .anyRequest()
            .authenticated()
            .and()
            .csrf()
            .disable()
            .headers()
            .frameOptions()
            .disable();
  }
}

My Swagger config:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration 
class SwaggerConfig {

@Bean
Docket api()  {

    return new Docket(DocumentationType.OAS_30)
            .select()
            .paths(PathSelectors.ant("/api/**"))
            .build();
  }
}

java

spring

spring-security

swagger

springfox

0 Answers

Your Answer

Accepted video resources