2 years ago
#62092
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:
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