Creo que el AuthenticationManager
delega la búsqueda de información de usuario persistente en una o más AuthenticationProvider
s. Los proveedores de autenticación (DaoAuthenticationProvider, JaasAuthenticationProvider, LdapAuthenticationProvider, OpenIDAuthenticationProvider
por ejemplo) se especializan en acceder a repositorios de información de usuario específicos. Se menciona algo más en this part del manual de referencia. Dice:
Es posible que desee registrar beans AutenticaciónProveedor adicionales con el ProviderManager y puede hacerlo utilizando el elemento con el atributo ref, donde el valor del atributo es el nombre del bean proveedor que desea agregar.
En otras palabras, puede especificar múltiples AuthenticationProviders, por ejemplo, uno que busca usuarios en una base de datos LDAP y otro que busca en una base de datos SQL.
Por lo tanto, rara vez necesitaría implementar un AuthenticationManager, sino que simplemente implementaría AuthenticationProviders para obtener los detalles del usuario de donde quiera obtenerlos. –
La mayoría de los AuthenticationProviders que podría necesitar ya han sido escritos por los chicos que escriben Spring Security, y están ahí en la documentación de la API para que pueda configurarlos. Si el que necesita aún no está en el marco, probablemente sea trivial implementar la interfaz AuthenticationProvider para sus propósitos. –
Como dijo Hans, En Sprint Security, la clase ProviderManager es una implementación de AuthenticationManager, que llama al método de autenticación AuthenticationProvider. La firma del método de ese Administrador de proveedores es org.springframework.security.providers.ProviderManager.doAuthentication (Autenticación) – Rajesh