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