Przykładowa aplikacja Spring SAML działa tak po wyjęciu z pudełka. Gdy użytkownik kliknie stronę, która jest chroniona przez wiosennym Bezpieczeństwa i wymaga systemu uwierzytelniania:
- zapamiętuje parametry, które zostały użyte do wywołania strony (wykonane automatycznie wewnątrz Wiosna zabezpieczeń za pomocą
ExceptionTranslationFilter
i HttpSessionRequestCache
) poprzez przechowywanie informacji w sesji HTTP
- wywołuje skoku punktu saml za wejście (
SAMLEntryPoint
klasy), który przekierowuje użytkownika do IDP, jest możliwe po wyborze IDP
- użytkownik uwierzytelnia w IDP jest przekierowany z powrotem do aplikacji
- Wiosna SAML weryfikuje odpowiedź i ja nvokes AuthenticationSuccessHandler, który (w przykładowej aplikacji) jest typu
org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler
- program obsługi sukcesu sprawdza, czy istnieje zapisane żądanie (umieszczone w pierwszym kroku), a jeśli tak, to powoduje, że przeglądarka użytkownika otwiera otwartą stronę z tym samym zestawem parametrów jak początkowo
- kontrola bezpieczeństwa powinien teraz przechodzą, pod warunkiem, że uwierzytelniony użytkownik jest uprawniony do dostępu do strony
można by oczywiście wdrożyć ten stan za pomocą przekaźnika od zamierzonych. Prawidłowym sposobem ustawienia stanu przekaźnika jest rozszerzenie SAMLEntryPoint
, przesłanianie metody getProfileOptions
i zwrócenie pożądanego stanu przekaźnika w zwróconym obiekcie WebSSOProfileOptions
.
Następnie można zmienić AuthenticationSuccessHandler
na org.springframework.security.saml.SAMLRelayStateSuccessHandler
, które przekierowują do adresu URL zwróconego ze stanu przekazywania po pomyślnym uwierzytelnieniu.
Świetnie! Potrzebuję dokładnie tego zdania: "Prawidłowym sposobem ustawienia stanu przekaźnika jest rozszerzenie SAMLEntryPoint, nadpisanie metody getProfileOptions i zwrócenie pożądanego stanu przekaźnika w zwróconym obiekcie WebSSOProfileOptions." Wielkie dzięki. –
relayState był dobrym sposobem przekazywania kontekstu między serwerem uwierzytelniającym a klientem. Dzięki za wskazówkę! –