Spring Security – Inicio de sesión personalizado

Spring Security es un marco de autenticación y control de acceso potente y altamente personalizable. Es el estándar de facto para proteger las aplicaciones basadas en Spring. Spring Security es un marco que se enfoca en proporcionar autenticación y autorización a las aplicaciones Java. Como todos los proyectos de Spring, el verdadero poder de Spring Security se encuentra en la facilidad con la que se puede ampliar para cumplir con los requisitos personalizados. Algunas de las características clave de Spring Security son:

  • Soporte completo y extensible para autenticación y autorización
  • Protección contra ataques como fijación de sesión, clickjacking, falsificación de requests entre sitios, etc.
  • Integración de API de servlets
  • Integración opcional con Spring Web MVC.

SpringSecurity proporciona su propia configuración de inicio de sesión con el nombre de usuario y la contraseña predeterminados, pero podemos anular la configuración predeterminada de SpringSecurity creando una configuración de inicio de sesión personalizada. Podemos agregar múltiples usuarios y también podemos permitirles diferentes roles. Para que podamos realizar la autorización en la API segura fácilmente. Analicemos cómo crear un inicio de sesión personalizado en Spring Security.

Implementación paso a paso

Paso 1: Cree un proyecto Spring Boot usando https://start.spring.io/

Project: Maven
Language: Java
Spring Boot: 2.2.8
Packaging: JAR
Java: 8
Dependencies: Spring Web,Spring Security

Paso 2: haga clic en Generar, que descargará el proyecto de inicio.

Paso 3: extraiga el archivo zip. Ahora abra un IDE adecuado y luego vaya a Archivo > Nuevo > Proyecto de fuentes existentes > Spring-boot-app y seleccione pom.xml. Haga clic en importar cambios en el aviso y espere a que el proyecto se sincronice como se muestra a continuación:

Nota : en la ventana Importar proyecto para Maven, asegúrese de elegir la misma versión de JDK que seleccionó al crear el proyecto.

Paso 4: ahora vaya a src> main> java> com.gfg.Spring.boot.app y cree dos archivos java, uno es controller.java y el otro es config.java

controlador.java

Java

@RestController
public class controller {
  
    @GetMapping("/delete") public String delete()
    {
        return "This is the delete request";
    }
}

El archivo java anterior se usa para configurar el controlador para manejar la solicitud entrante desde el lado del cliente. Ahora tenemos que configurar la solicitud para eso usaremos el archivo config.java. 

config.java: este archivo de configuración se usa para crear seguridad personalizada en el proyecto Spring.

Java

@EnableWebSecurity
public class config extends WebSecurityConfigurerAdapter {
  
    // Adding the roles
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("Zack")
                .password("aayush")
                .roles("admin_role")
                .and()
                .withUser("Aayush")
                .password("Saini")
                .roles("student_role");
    }
    
    // Configuring the api 
      // according to the roles.
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.
                httpBasic()
                .and()
                .authorizeRequests()
                .antMatchers("/delete").hasRole("admin_role")
                .and()
                .formLogin();
    }
    
      // Function to encode the password
      // assign to the particular roles.
    @Bean
    public PasswordEncoder getPasswordEncoder(){
        return NoOpPasswordEncoder.getInstance();
    }
}

La clase WebSecurityConfigureAdapter se usa para configurar las requests entrantes, principalmente se usan dos métodos para las configuraciones. El primer método se usa para agregar los roles para un servidor de aplicaciones Spring y el otro método se usa para distinguir la solicitud de acuerdo con los roles. Ahora ejecute la aplicación principal de la aplicación de primavera.

Nota : No se genera una contraseña predeterminada porque ya hemos utilizado una configuración externa para manejar las credenciales de usuario.

Probando la API en Postman. Vaya al cartero y escriba localhost:8080/delete

Uso de los roles de administrador:

Producción:

Usando el rol de estudiante:

Producción:

De esta manera podemos crear un inicio de sesión personalizado en la aplicación Spring. 

Publicación traducida automáticamente

Artículo escrito por zack_aayush y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *