Frage

Hat WCF 4.0 ein analoge Klassen / Modul / was auch immer den WCF-Ruhestarter-Set-Anforderungsvorgang?

War es hilfreich?

Lösung

Es gibt nichts, was 1-1 nicht maps, aber Sie können einen iDispatchMesSageInspector von WCF Core verwenden, um die meisten Szenarien zu implementieren, für die der Anforderungsinspektor dies tun würde.Der Beitrag bei http://Blogs.msdn.com/B/carlosfigueira/archive/2011/04/19/wcf-extensibility-message-inspectors.aspx hat einige detaillierte Informationen zu den Nachrichteninspektoren.

Andere Tipps

Ich bin mit einem Update zurück.

Ich schätze eine Einfachheit im Code und nachdem ich dieses Problem gelöst habe, kann ich nicht sagen, dass ich es mehr bevorzugen, als die Abfragezeichenfolge-Methode. Ablegen eines einzelnen Anrufs in jeden Dienstend-Endpunkt, der eine AUTHN-Methode neben der Authz-Methode nennt, scheint leichter als einige davon zu glauben.

ohnehin, genügend der Meinungen ... auf der Lösung. Die Lösung liegt direkt unter unseren Augen auf dem Stackoverflow bei diesem Link, aber in unserem Kontext nicht gut beschrieben ... also werde ich "user634119" für den hier gefundenen Beispielcode geben: Header in BetriebSkontext

Zunächst müssen wir unseren web.config-Datei einen ServiceBehavior hinzufügen: generasacodicetagpre.

NEXT MACHEN SIE EINE KLASSE (als Basisauthorization, wie in den SERVICE-Hilfsbehelf-Block oben genannt): generasacodicetagpre.

Weiter eine Authentifizierungsklasse erstellen: generasacodicetagpre. Verwenden Sie in der Authentifizierungsmethode HTTPREQUESTMESSEPRAPERTY, um den Anforderungskopf Details herauszuziehen, und führen Sie die gleichen drei Schritte aus, die in meiner ersten Antwort beschrieben werden.

Eduardo, Sie haben gefragt: @carlosfigueira: Kann ich es verwenden, um ein Authentifizierungssubsystem zu implementieren?

Ich arbeite an derselben Frage und habe mindestens eine Lösung (nachstehend beschrieben) für Sie und einen bevorstehenden Autorisierungsheader-Basis (den ich glaube, das ist derjenige, an den Sie denken "abfangen").

Der einfachste Weg, um einen WCF 4-Rest-WebHTTP-Programmiermodell-basierter Endpunkt zu sichern, ist dies:

    .
  1. Geben Sie einen freigegebenen geheimen Schlüssel und einen API-Schlüssel für jeden Client aus, der als Anmeldeinformationen verwendet wird. Der API-Schlüssel ist wirklich derselbe wie ein Benutzername.
  2. Führen Sie alle Endspoints über SSL aus, um sicherzustellen, dass Sie immer einen Kanal- / Nachrichten- / Datensicherheit haben
  3. verlangt, dass die Clients das gemeinsame Geheimnis verwenden, um einen HAHAC-SHA1 (oder EQUIV) -Schrich-String (oder Equiv) zu erstellen, der einen Zeitstempel und den API-Schlüssel enthält.
  4. verlangt, dass der Client alle drei davon als Abfragezeichensparameter in jeder Anfrage weitergeben kann :
    • Signature
    • Zeitstempel
    • API-Taste
    • Beispiel: https://127.0.0.1/restendpoint?sig= {Sigstring} & apikey= {apikey} & timestamp= {timestamp} & alle deine anderen Parameter hier ...
    • auf Ihrer Serviceseite, implementieren Sie eine Authentifizierungsmethode, die alle drei Zeichenfolgen und dann:
      • sucht den API-Schlüssel und gibt das gemeinsame Geheimnis des Kunden an, dass Sie in einem db oder irgendwo anders haben.
      • Vergleichen Sie den Zeitstempel gegen dateTime.Now, um sicherzustellen, dass die Anforderung nicht mehr als 15 Minuten alt ist, um Wiedergabeangriffe abzuwenden.
      • Verwenden Sie diese 3 Zeichenfolge, erstellen Sie die Signatur-Zeichenfolge und vergleichen Sie Ihre mit dem von dem Kunden übergebenen Personen.
      • Wenn sie übereinstimmen, ist der Anforderer authentisch.

        Nun, desto besser ist dies, indem der HTTP-Berechtigungsanforderungs-Header verwendet wird, um diese 3 Saiten zu speichern und einen globalen Interceptor-ISH-Prozess aufzunehmen, dass alle Anfragen ansehen. Dies würde das Potential für einen freiliegenden Endpunkt ohne einen Authentifizierungsblock (Nun, zumindest sein dürfen vielleicht) verhindern.

        Problem mit der Verwendung der Abfragezeichenfolge, um alle diese Informationen zu übertragen es.

        Einige denken, eine anspruchsvollere Weise zu tun, um dies zu tun, ist ein STS-Modell, in dem Sie den Client benötigen, um diese 3 Authentifizierungszeichenfolgen an einen Sicherheits-Token-Service-Endpunkt zu übergeben. Die Antwortnachricht würde ein Session-Token zurückgeben, das der Kunde an jedem Anruf anstelle der 3-Saiten weiterleiten würde. Es ist wahr, dass für den Kunde keine HMAC-Hash-Signatur bei jedem Anruf generiert werden muss, aber die Serverseite muss jedoch immer noch das Token authentifizieren, und das Session-Konzept wird das saubere erholsame statelose Verhalten verunreinigt.

        Ich werde mein Bestes geben, um Code-Blöcke zu posten, die sowohl die Abfragezeichenfolge als auch die Auth-Header-Methoden implementieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top