Autenticación básica utilizando la interfaz de usuario Swagger

Abhishek:

Estoy tratando de desarrollar un servicio API basada resto de primavera-arranque con documentación de la API a través de la interfaz de usuario Swagger. Quiero habilitar la autenticación básica a través de la interfaz de usuario contoneo de modo que el usuario sólo puede ejecutar el API de una vez que él / ella se autentica usando el botón Autorizar en la interfaz de usuario contoneo (por el cual una "authorization: Basic XYZse añade a la cabecera llamada de API

En el extremo delantero (en el archivo de .json para la interfaz de usuario Swagger Me han añadido autenticación básica para todas las API utilizando el siguiente código (según la documentación):

"securityDefinitions": {
        "basic_auth": {
            "type": "basic"
        }
    },
    "security": [
        {
            "basic_auth": []
        }
    ]

¿Cómo debería implementar la lógica de backend para el caso de uso mencionado anteriormente (el usuario sólo puede ejecutar el API de una vez que él / ella se autentica usando el botón Autorizar en la interfaz de usuario y arrogancia que de lo contrario muestra un error 401 en el funcionamiento de la API)

Parte del código de documentación o de la muestra de la misma sería de gran ayuda

sifis:

Una opción es utilizar el navegador aparecerá autorización .

  1. Cuando se habilita autenticación básica para su aplicación arranque primavera, arrogancia ui utilizará automáticamente el navegador es la ventana pop-up con el fin de utilizarlo para autenticación básica. Esto significa que el navegador va a mantener las credenciales para hacer peticiones al igual que cuando se trata de acceder a un punto final GET asegurada hasta que lo cierre.

Ahora, digamos que usted no desea utilizar el arriba y desea contoneo-ui para la autenticación básica como usted dice, tiene que habilitar la funcionalidad de autenticación de contoneo-ui y opcionalmente añadir excepción de seguridad al acceder url contoneo-ui.

  1. Para habilitar la funcionalidad de autenticación básica para la interfaz de usuario contoneo (con el botón "Autorizar" en la interfaz de usuario) tiene que configurar contexto de seguridad y en el Esquema a su Swagger Expediente (Esta es una versión simplificada):

    @Configuration
    @EnableSwagger2
    public class SwaggerConfig implements WebMvcConfigurer{
    
        @Bean
        public Docket api() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .select()
                    .apis(RequestHandlerSelectors.any())
                    .paths(PathSelectors.any())
                    .build()
                    .securityContexts(Arrays.asList(securityContext()))
                    .securitySchemes(Arrays.asList(basicAuthScheme()));
       }
    
        private SecurityContext securityContext() {
            return SecurityContext.builder()
                    .securityReferences(Arrays.asList(basicAuthReference()))
                    .forPaths(PathSelectors.ant("/api/v1/**"))
                    .build();
        }
    
        private SecurityScheme basicAuthScheme() {
            return new BasicAuth("basicAuth");
        }
    
        private SecurityReference basicAuthReference() {
            return new SecurityReference("basicAuth", new AuthorizationScope[0]);
        }
    
    }
    

Esto permite que el botón de autorización en la interfaz de usuario. introducir descripción de la imagen aquí

Ahora es probable que desee para sus usuarios acceden a la arrogancia-ui libremente y utilizar este botón para su autorización. Para ello hay que contoneo exentos de autenticación básica de aplicación. Parte de esta configuración es de configuración de seguridad y hay que añadir siguiente código:

public class SecurityConfig extends WebSecurityConfigurerAdapter{

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

            http
                .httpBasic()
                .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)   
                .and().authorizeRequests()
                .antMatchers(
                        "/", "/csrf", 
                        "/v2/api-docs", 
                        "/swagger-resources/**",
                        "/swagger-ui.html",
                        "/webjars/**"
                        ).permitAll()
                .anyRequest().authenticated();

    }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=333081&siteId=1
Recomendado
Clasificación