La naturaleza de la seguridad de la primavera
La seguridad de Spring es esencialmente una serie de filtros, que luego se insertan en la cadena de filtro como un filtro separado, llamado FilterChainProxy. Como se muestra en la figura.
De hecho, puede haber múltiples cadenas de filtro en FilterChainProxy para verificar diferentes URL, y los filtros propiedad de la cadena de filtro aumentarán o disminuirán automáticamente de acuerdo con el servicio definido. Por lo tanto, no es necesario mostrar y definir estos filtros a menos que desee implementar su propia lógica.
Categorías clave
Autenticación
La autenticación es una interfaz utilizada para representar la información de autenticación del usuario. Antes de que el usuario inicie sesión para autenticar, la información relevante se encapsulará en un objeto de la clase de implementación específica de autenticación. Después de que la autenticación de inicio de sesión sea exitosa, se generará un objeto de autenticación con información más completa, incluidos los permisos de usuario y otra información, y luego se guardará en el Seguridad de SecurityContexTholder para que los programas posteriores llamen, como la autenticación de los derechos de acceso.
AuthenticationManager
La interfaz principal utilizada para la verificación es AuthenticationManager, que tiene solo un método:
Interfaz pública AutenticationManager {Autenticación de autenticación (autenticación de autenticación) lanza AuthenticationException;}Puede haber tres situaciones después de ejecutar el método Authenticate ():
La verificación es exitosa y se devuelve una autenticación con la información del usuario.
La verificación falló y se lanzó una excepción de AuthenticationException.
Incapaz de juzgar, regresar nulo.
Providermanager
Providermanager es la implementación más común de AuthenticationManager anterior. No maneja la verificación por sí solo, pero delega la verificación a la lista de autenticación que Configura, y luego llama a cada autenticación a su vez para su autenticación. En este proceso, mientras se autentica con éxito un proveedor de autenticación, no se continuará con más verificación. Este resultado de la autenticación se utilizará directamente como el resultado de la autenticación de Providermanager.
Proceso de certificación
Los usuarios inician sesión con su nombre de usuario y contraseña.
Spring Security encapsula el nombre de usuario y la contraseña obtenidos en una clase de implementación de la interfaz de autenticación, como la UserNamePasswordAuthenticationToken de la UserNaSeN de UserNauthentToken.
Pase el objeto de autenticación generado anteriormente al autenticationManager de implementación de la implementación Providermanager para la autenticación.
Providermanager llama a cada autenticación a su vez para la autenticación. Después de que la autenticación sea exitosa, un objeto de autenticación encapsula los permisos de los usuarios y se devolverá otra información.
Asigne el objeto de autenticación devuelto por AuthenticationManager al actual SecurityContext.
Verificación personalizada
Con las reservas de conocimiento anteriores, puede personalizar el método de verificación. De lo anterior, podemos ver que, de hecho, los administradores de autenticación se utilizan en realidad para realizar operaciones de verificación. Por lo tanto, si desea personalizar el método de verificación, solo necesita implementar su propio autenticación Provider y luego agregarlo al Providermanager.
Personalizar autenticación
@ComponentPublic CLASSAUTHENTICATIONSPROVIDER implementa AuthenticationProvider {@Override Public Authentication Authentication (autenticación Autenticación) lanza AuthenticationException {String name = Authentication.getName (); String Password = Authentication.getCredentials (). ToString (); if (debería sereuthenticateAgainstThirdPartySystem ()) {// use las credenciales // y autenticando el sistema de terceros devuelve nuevo UserNamePassWalDauthenticationToken (nombre, contraseña, nueva ArrayList <> ()); } else {return null; }} @Override public Boolean Supports (class <?> Autenticación) {return Authentication.equals (usernamePassWderAuthenticationToken.class); }}El método Supports () acepta un parámetro de autenticación para determinar si la autenticación pasada es un tipo que la autenticación puede manejar.
Registre la autenticación
Ahora registre el Provider de autenticación que acaba de crear en el Providermanager y todas las operaciones están completadas.
@Configuration@enablewebsecurity@componentsCan ("org.baeldung.security") clase pública SecurityConfig extiende WebSecurityConfigurerAdapter {@aUtowired CustomAuthenticationProvider AuthProvider; @Override Protected void Configurar (AuthenticationManagerBuilder Auth) lanza la excepción {Auth.AuthenticationProvider (AuthProvider); } @Override Protected void configure (httpsecurity http) lanza la excepción {http.authorizequests (). AnyRequest (). Authenticated () .and () .httpbasic (); }}Resumir
Lo anterior es el análisis del proceso de verificación de seguridad de Spring y los métodos de verificación personalizados que le presentan el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!