Quelqu’un peut-il me dire la différence entre un AuthenticationManager
et un AuthenticationProvider
dans Spring Security?
Comment sont-ils utilisés et comment sont-ils appelés. Je crois savoir qu’un SecurityFilter
appelle le AuthenticationManager
pour authentifier un object d’ Authentication
? Mais alors, où AuthenticationProvider
entre-t-il en jeu?
Merci!
Je pense que AuthenticationManager
délègue la récupération des informations utilisateur persistantes à un ou plusieurs AuthenticationProvider
. Les fournisseurs d’authentification ( DaoAuthenticationProvider, JaasAuthenticationProvider, LdapAuthenticationProvider, OpenIDAuthenticationProvider
par exemple) sont spécialisés dans l’access à des référentiels d’informations utilisateur spécifiques. Quelque chose d’autre est mentionné dans cette partie du manuel de référence. Ça dit:
Vous souhaiterez peut-être enregistrer des beans AuthenticationProvider supplémentaires avec le ProviderManager et vous pouvez le faire en utilisant l’élément avec l’atsortingbut ref, où la valeur de l’atsortingbut est le nom du bean fournisseur que vous souhaitez append.
En d’autres termes, vous pouvez spécifier plusieurs AuthenticationProviders, par exemple, un qui recherche des utilisateurs dans une firebase database LDAP et un autre qui recherche dans une firebase database SQL.
De référence de spring
AuthenticationManager est juste une interface, donc l’implémentation peut être tout ce que nous choisissons
L’implémentation par défaut de Spring Security s’appelle ProviderManager et, plutôt que de gérer elle-même la demande d’authentification, elle délègue à une liste d’AuthenticationProvider configurée, chacune étant interrogée à tour de rôle pour voir si elle peut effectuer l’authentification. Chaque fournisseur lancera une exception ou renverra un object d’authentification entièrement rempli.
En outre, si vous vérifiez le code source pour AuthenticationManager, ProviderManager et AuthenticationProvider, vous pouvez le voir clairement.
ProviderManager implémente l’interface AuthenticationManager et dispose d’une liste de fournisseurs d’authentification. Donc, si vous voulez avoir un mécanisme d’authentification personnalisé, vous devrez implémenter le nouveau AuthenticationProvider.