2010-02-24 12 views

Odpowiedz

25

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.

+0

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ć. –

+0

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. –

+0

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

3

Od wiosny reference

The AuthenticationManager jest tylko interfejs, więc realizacja może być cokolwiek zdecydujemy

Wdrożenie domyślne w Spring Bezpieczeństwa nazywa ProviderManager i zamiast obsługi żądania uwierzytelniania siebie, deleguje do listy skonfigurowanych dostawców uwierzytelniania, z których każdy jest sprawdzany po kolei, aby sprawdzić, czy może wykonać uwierzytelnianie. Każdy dostawca albo rzuci wyjątek, albo zwróci całkowicie wypełniony obiekt uwierzytelniania.

także sprawdzając kod źródłowy AuthenticationManager, ProviderManager i AuthenticationProvider widać to wyraźnie.

ProviderManager implementuje interfejs AuthenticationManager i ma listę dostawców uwierzytelniania. Więc jeśli chcesz mieć niestandardowy mechanizm uwierzytelniania, musisz zaimplementować nowe narzędzie uwierzytelniania.