Announcement

Collapse
No announcement yet.

Wie sollte man einen User-Login-Mechnismus vorsehen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie sollte man einen User-Login-Mechnismus vorsehen?

    Hallo,


    ich habe unter Delphi 2007 (Win32) einen Webservice geschrieben. Nun soll noch eine Authentifizierung dazugefügt werden, damit nicht jeder den Service einfach aufrufen kann, sondern nur nach erfolgreichem Login. Und das am besten allgemein, sodass möglichst viele Anwendungen damit klar kommen.

    Nur wie macht man das am besten, es gibt viele Möglichkeiten?

    1. Bei jeder Webservice-Funktion mit zusätzlichen Übergabeparametern (User, Passwd) den ganzen Login jedesmal erneut durführen -> unsportlich

    2. einen Login-Webservice aufrufen, der eine gültige Session-ID zurückgibt. Diese muss man dann bei jedem Aufruf als zusätzlichen Parameter bei jeder Webservice-Funktion wieder reinreichen -> jeder Webservice muss dann angepackt werden und um den Übergabeparam erweitert werden. Ist das schlau?

    3. SOAP-Header: ich habe schon einmal gesehen, dass nach einmaliger Anmeldung eine Session-ID im SOAP-Header automatisch mitgeschickt wird. Wie geht das mit Delphi 2007 und ist das überhaupt sinnvoll (möglichst hohe Kompatibilität zu anderen Systemen, die den Service nutzen sollen).

    4. WS-Security - was ist das, geht das mit Delphi 2007 und ist das sinnvoll? Hört sich an, als sei das das das Mittel der Wahl, da standardisiert ...


    Also, was meint Ihr dazu?

    Viele Grüße,

    Patrick

  • #2
    User-Login Mechanismus

    Web Service Security ist jedenfalls ein standardisiertes Verfahren, wobei es hier div. Untervariante gibt. Die einfachste Variante ist das sog. Usernametoken-Profile.
    Dabei werden im SOAP-Header die WSSE-Informationen, u.a. mit Username, Passwort-Information, Zeitpunkt zu dem die Nachricht erzeugt wurde und einem Zufallsstring (dem sog. nonce) mitgesendet. Und dies bei jedem einzelnen Aufruf. D.h. es gibt keinen ersten Log-In-Schritt. Aus dem Usernamen, dem Erstellungszeitpunkt dem Zufallsstring und dem Passwort wird dann ein Hash gebildet und wird dann als die Passwort-Information mitgesendet. Typischerweise ist eine Nachricht für 5 Minuten gültig, d.h. eben auch, dass Server und Client über recht genau gehende Uhren verfügen müssen. Wenn man das geheime Passwort nicht kennt, dann kann man auch keine gültige Nachricht erzeugen. Aber ein Angreifer könnte eine valide Nachricht abfangen und nochmal senden. Um diese Bedrohung zu unterbinden wird der Zufallsstring und die Erzeugungszeit mit in die Securityinformationen aufgenommen. Wenn eine Nachricht nur für eine kurze Zeit gültig ist, und der Server einen Cache über die in dieser Zeitspanne verwendeten Zufallsstrings (über die ja auch der Hash gebildet wird) vorhält sind diese sog. Replay-Attacken abgewehrt. Soweit zur Erklärung was WS-Security ist.
    Ob Delphi diese Erweiterung direkt unterstützt weiß ich leider nicht. Aber wenn Du die SOAP-Nachricht 'per Hand' um diese Elemente erweitern kannst dann geht es zumindest prinzipielle in Delphi.

    Gruß

    Comment

    Working...
    X