2016-12-01 5 views
0

Wir haben eine Anforderung, wo wir SAML-Authentifizierung in unserer Anwendung für einen Kunden mit ADFS als IDP aktivieren müssen.Spring Security SAML mit Standard-Java-Anwendung

Nachdem ich verschiedene Optionen in Betracht gezogen hatte, konnte ich mit Spring SAML Security arbeiten, wie in den Dokumenten beschrieben. Jetzt ist das Problem, die SAML-Sicherheit mit unserer Anwendung zu integrieren.

Leider ist unsere Anwendung immer noch eine Leagacy-Java-Anwendung mit Servlets und Jsp und nicht im Frühjahr basiert. Ich habe mich nur gefragt, wie die 2 integriert werden kann. Das Dokument erwähnt, dass dies möglich ist. Ich konnte jedoch keine Aufschrift darüber finden.

Kann jemand mich zu der relevanten Quelle verweisen, die Richtlinien für diesen Ansatz bereitstellen kann.

Danke.

Antwort

1

Klassen im Paket org.springframework.security.saml.websso enthalten den Kern der SAML-Verarbeitungsfunktionalität und sind unabhängig von Spring Security. Sie enthalten nur wenige Klassenimporte aus Spring, daher müssen sich Spring-Core-Klassen im Klassenpfad befinden, aber die Anwendung selbst muss Spring/SpringSecurity nicht verwenden.

Sie müssen die Logik neu implementieren, die für Spring Security spezifisch ist - Paket org.springframework.security.saml - z. SAMLEntryPoint, SAMLProcessingFilter, und rufen Sie Ihre Implementierung während des Authentifizierungslebenszyklus auf. Die Logik dieser Klassen ist einfach, daher ist die Aktivierung grundlegender Anwendungsfälle ziemlich einfach.

+0

Dank Vladimír für die Führung. Ich begann mit diesem Ansatz. brauchte eine Weile, um den Fluss zu verstehen, aber ich hole auf. Momentan erstelle ich einen Umleitungsruf von meiner Java-Anwendung an/spring-security-saml2/saml/login. Bei erfolgreicher Authentifizierung von ADFS leite ich den Benutzer zurück zu meiner Java-Anwendung, indem ich die RelayState-Eigenschaft in SamlEntryPoint festlege. Jetzt muss ich die userClaims in meiner Java-Anwendung abrufen. Ich habe mich gefragt, was hier ein idealer Ansatz sein sollte. – shirjai

0

Danke Vladimír für die Führung. Dies ist, wie ich eine Standard-Legacy-Java-Anwendung mit Feder Sicherheit integriert für saml basierte Authentifizierung:

  1. Modified securityContext.xml
    Satz idpDiscoveryEnabled = false
    Satz forceAuthN = true Benutzer zu zwingen, um sich anzumelden, wenn SAML-Token abläuft
    aktualisiert defaulttargetURL in der Seite successHandler to authhandler.jsp, im Frühjahr Sicherheits-App, um zurück zu meiner Anwendung zu leiten
  2. Ich habe einen Filter auf alle Web-Anrufe in meiner Java-App angewendet. Dieses Filter leitet den Anruf zu/Feder-sicherheits SAML2/saml/login
  3. Feder saml den Benutzer mit ADFS.On erfolgreichen Authentifizierung authentifiziert werden Benutzer
  4. Authhandler.jsp ist dieselbe wie Index authhandler.jsp umgeleitet. Jsp, aber die abgerufenen Ansprüche sind versteckte Felder hier. Diese Werte in versteckten Feldern werden zurück an meine Standard-Java-Anwendung gesendet.
  5. Hier führt meine Java-Anwendung andere Authentifizierung auf Anwendungsebene aus und geht wie gewünscht vor.

Würde Vorschläge für Improvisation oder Identifikation der Mängel in dem obigen Ansatz schätzt

Verwandte Themen