Myślę, że AuthenticationManager
deleguje pobieranie trwałych informacji użytkownika do jednego lub więcej AuthenticationProvider
s. Dostawcy uwierzytelniania (na przykład) (DaoAuthenticationProvider, JaasAuthenticationProvider, LdapAuthenticationProvider, OpenIDAuthenticationProvider
) specjalizują się w uzyskiwaniu dostępu do określonych repozytoriów informacji o użytkownikach. Coś innego jest wymienione w this part w podręczniku referencyjnym. Jest napisane:
Możesz chcieć zarejestrować dodatkowe komponenty AuthenticationProvider za pomocą ProviderManager i możesz to zrobić za pomocą elementu z atrybutem ref, gdzie wartość atrybutu jest nazwą komponentu bean dostawcy, który chcesz dodać.
Innymi słowy, można określić wielu dostawców uwierzytelniania, na przykład taki, który wyszukuje użytkowników w bazie danych LDAP, a drugi szuka w bazie danych SQL.
Rzadko więc trzeba zaimplementować program AuthenticationManager, a raczej wdrożyć dostawców uwierzytelniania, aby pobrać dane użytkownika z dowolnego miejsca, z którego chcesz je uzyskać. –
Większość dostawców uwierzytelniania, których możesz potrzebować, została już napisana przez użytkowników piszących Spring Security i znajduje się w dokumentacji interfejsu API, dzięki czemu możesz je skonfigurować. Jeśli ta, której potrzebujesz, nie jest jeszcze w ramach, prawdopodobnie jest to banalne, aby zaimplementować interfejs AuthenticationProvider do swoich celów. –
Jak powiedział Hans, W zabezpieczeniach Sprint, klasa ProviderManager jest implementacją narzędzia AuthenticationManager, która wywołuje metodę uwierzytelniania AuthenticationProvider. Podpis metody tego menedżera dostawców to org.springframework.security.providers.ProviderManager.doAuthentication (uwierzytelnianie) – Rajesh