2009-01-27 19 views
8

Ich versuche zum ersten Mal SAML-fähige SOAP-Dienste zu implementieren, und ich habe einige konzeptionelle Fragen bezüglich der Rolle eines Secure Token Service (STS) in einer SAML-Implementierung.Brauchen wir unbedingt einen STS für SAML?

Benutzer ---> Web Application --- SOAP/SAML -> Messaging Application

Grundsätzlich ist das Szenario ist, dass sich der Benutzer in der Web-Anwendung sein Benutzernamen und ein Passwort, Web-Anwendung wiederum authenticate und Autorisieren des Benutzers mit einem externen Dienst, bei erfolgreicher Authentifizierung/Autorisierung erstellt die Webanwendung eine SAML-Zusicherung des Absenders mit dem Benutzer als Subjekt, signiert die Assertion mit ihrem privaten Schlüssel, verpackt die Assertion in einen Soap-Umschlag unter Verwendung von WS-S und macht a SOAP-Aufruf an die Messaging-Anwendung. Sobald die Messaging-Anwendung die Anforderung empfängt, überprüft sie die Signatur mit dem öffentlichen Schlüssel der Webanwendung, zieht die Authentifizierungs- und Attributanweisungen aus der SAML-Assertion und basierend darauf die Authentifizierungsrichtlinie für den Endpunkt durch.

Wie Sie im obigen Szenario sehen können, gab es keine externe STS beteiligt, aber die meisten Literatur, die ich auf SAML gelesen habe, legen nahe, dass ein STS unbedingt erforderlich ist. Die Frage, die ich habe, ist, dass ich mit dem obigen Szenario etwas falsch mache, da ich keinen Grund sehe, warum ich unbedingt eine STS brauchen würde. Sicher, es wäre schön, eine STS zu haben, aber meiner Meinung nach hindert mich die Abwesenheit davon nicht daran, SAML für meinen Anwendungsfall zu implementieren.

Antwort

21

Nein, Sie benötigen keinen STS für SAML-Tokens in Webdiensten. Der STS tauscht ein Token (wobei "token" Dinge wie username + password umfasst) gegen ein anderes aus. Daher ist es nützlich, dass Ihr Web-Service-Consumer einige Eingabe-Token (typischerweise Benutzername + Passwort oder eine Signatur + X.509-Zertifikat zur einfachen Verwendung sendet) Fälle) an die STS und erhalten Sie eine SAML Assertion alle bereit zu gehen.

Jetzt, wenn Sie die Möglichkeit haben, SAML-Token zu erstellen, die von Ihrem Web-Service-Provider akzeptiert werden, haben Sie es! Kein STS erforderlich - die tatsächliche SOAP-Nachricht auf dem Draht ist identisch, egal ob ein STS an seiner Erstellung beteiligt war oder nicht.

Ich schrieb ein paar Blog einige dieser dieses Detail ein paar Jahren Einträge vor:

Access Manager 7.1 Beta in Java EE Tools/NetBeans 5.5 Enterprise Pack

Anatomy of a SAML-Secured SOAP Message

Sun Access Manager 7.1 wurde von OpenAM ersetzt worden, aber die Prinzipien der bleiben gleich. Insbesondere ist der zweite Eintrag unabhängig von einem tatsächlichen Produkt.

+0

Das macht Sinn. Danke für deinen Kommentar –

0

Sie können alle Open-Source-SAML-Toolkits nutzen. Wenn Ihre Anwendung in Java geschrieben ist und Sie entweder mit JBoss oder Weblogic arbeiten, ist die SAML-Unterstützung integriert.