2014-09-24 5 views
6

Ich möchte URL Parameter von der ersten Anfrage meiner Website (SP) erinnern und verwenden sie nach Antwort von IdP.Spring saml - Wie erinnern Anfrage Parameter bei der Anmeldung auf SP, und die Verarbeitung von ihnen nach IdP Antwort

Ich verwende Spring-Saml-Erweiterung und denke über RelayState-Attribut, kann aber kein Beispiel finden, wie es mit Parametern aus Anfrage erstellen.

Ich brauche das für die Umleitung Benutzer nach der SSO-Authentifizierung Prozess Zielseite (Modul der Anwendung) hängt davon ab, was in der ersten Anfrage war.

Antwort

14

Spring SAML-Beispielanwendung verhält sich wie diese aus der Box. Wenn der Benutzer trifft auf eine Seite, die von Spring Security geschützt ist und erfordert Authentifizierungssystem:

  • erinnert Parameter, die die Seite (erfolgt automatisch innerhalb Spring Security mit ExceptionTranslationFilter und HttpSessionRequestCache) berufen wurden verwendet, um durch die Informationen in der HTTP-Sitzung zu speichern
  • ruft Einspeisepunkt Frühling SAML (SAMLEntryPoint Klasse), die Benutzer an den IDP, möglich nach IDP Auswahl
  • Benutzer authentifiziert bei IDP leitet und umgeleitet wird, zurück zu Ihrer Anwendung
  • Frühling SAML überprüft die Antwort und i nvokiert AuthenticationSuccessHandler, der (in der Beispielapplikation) vom Typ org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler
  • ist. Der Success-Handler überprüft, ob eine gespeicherte Anfrage existiert (im ersten Schritt) und wenn dies der Fall ist, öffnet der Browser die Seite mit dem gleichen Satz von Parametern wie ursprünglich nun der authentifizierte Benutzer, vorausgesetzt, ist berechtigt, den Zugriff auf die Seite

Sie könnten natürlich implementieren diese mit Hilfe der Relaiszustand übergehen sollte, wie Sie beabsichtigten

  • die Sicherheitsüberprüfung. Die korrekte Einstellung des Relaisstatus erfolgt durch Erweitern von SAMLEntryPoint, Überschreiben der Methode getProfileOptions und Zurückgeben des gewünschten Relaisstatus im zurückgegebenen Objekt WebSSOProfileOptions.

    Sie können dann die AuthenticationSuccessHandler zu org.springframework.security.saml.SAMLRelayStateSuccessHandler ändern, die nach erfolgreicher Authentifizierung eine Weiterleitung an die vom Relaisstatus zurückgegebene URL vornehmen.

  • +0

    Großartig! Ich brauche genau diesen Satz: "Die richtige Methode zum Festlegen des Relay-Status ist das Erweitern von SAMLEntryPoint, das Überschreiben der Methode getProfileOptions und das Zurückgeben des gewünschten Relay-Status im zurückgegebenen WebSSOProfileOptions-Objekt." Danke vielmals. –

    +0

    relayState war eine gute Möglichkeit, den Kontext zwischen dem Authentifizierungsserver und dem Client zu übergeben. Danke für den Tipp! –

    Verwandte Themen