Spring Security i logowanie w Swagerze

0

Jak ustawić możliwość logowania i wylogowania w Swagerze w połączeniu ze Spring Security? Po włączeniu apki mogę kliknąć na zabezpieczony endpoint i jestem pytany o dane do logowania. Po zalogowaniu bez problemu dostaje się do danego zasobu, ale nie mam opcji wylogowania się i zalogowania na jakiegoś innego użytkownika. Mogę tylko wejść na localhost:8080/logout i co prawda dostaję komunikat o prawidłowym wylogowaniu, ale potem jak wejdę znowu na localhost:8080/swagger-ui to jestem dalej na starym użytkowniku. Na różnych tutorialach widziałem, że w Swagerze pojawa się informacja, że wszystkie endpoint są zabezpieczone i obok każdego jest taka kłódka i oczywiście możliwość logowania/wylogowywania.
Tutaj przykład:
https://i.stack.imgur.com/zRSoo.png

Moja konfiguracja Spring Security i Swaggera:

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();
    }


}

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();
    }
}

0

A te linki patrzyłeś? Ogólnie chyba łatwiej za pomocą jwt, ale basic authem też możesz poszukać

https://stackoverflow.com/questions/50545286/spring-boot-swagger-ui-set-jwt-token
https://www.baeldung.com/spring-boot-swagger-jwt

1 użytkowników online, w tym zalogowanych: 0, gości: 1