Frage

Ich habe einen WCF-Dienst bekam, die Client-Anmeldeinformationen erhalten müssen, und eine Art von rollenbasierten Daten zu pflegen, auf Grund meiner Auth Methode.

Die Clients auf vielen verschiedenen Systemen befinden, und als solche wird jeder Kunde eine eindeutige Benutzer-ID und pw.

Ich bin mit Basichttpbinding und ein paar Artikel gelesen haben, wie diese, http://nirajrules.wordpress.com/2009/05/22/username-over-https-custombinding-with-wcf%E2%80%99s-channelfactory-interface/ , dass der Prozess beschreiben.

Also, was ich suche, ist, wenn jemand einen vollständigen Client / Server wie folgt ein Blick auf, so konfiguriert habe ich meine eigene Lösung daraus ableiten können.

Was ich möchte, ist, die Benutzername und das Passwort in dem Header für jede Anforderung übergeben zu tun hat, vorbei an irgendeine Art von SecurityTokenValidationException wieder scheitern, oder fortgesetzt, wenn übergeben.

Danke.

UPDATE

Ich bin mit dem WSHttpBinding mit der folgenden Konfiguration auf das Client und Server:

  <wsHttpBinding>
    <binding name="wsHttpEndpointBinding" >
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Basic" />
        <message clientCredentialType="UserName" />
      </security>
    </binding>
  </wsHttpBinding>

Und der Aufruf an den Server vom Client wie folgt:

ServiceReference1.ServiceClient myClient = new ServiceReference1.ServiceClient();

myClient.ClientCredentials.UserName.UserName = "billuser";
myClient.ClientCredentials.UserName.Password = "mypassword";

Response.Write("Data from WCF Service: " + myClient.GetData(1));

Ich glaube, ich brauche ein bisschen eine Hand mit Verknüpfung den CustomUsernamePasswordValidator auf dem Server auf, als ich noch immer die ‚... konnte nicht aktiviert werden.‘ Fehler.

War es hilfreich?

Lösung

Müssen Sie den Basichttpbinding benutzen? nur dort, dass die Bindung wirklich unterstützen ist für Legacy-WS-BasicProfile Implementierungen (das heißt ASMX). Wenn Sie Ihre Kunden auch .NET / WCF sind, würde ich empfehlen wsHttpBinding verwenden, die aus dem Kasten heraus eine Vielzahl von Sicherheitsoptionen zur Verfügung stellt. Sie könnten Zertifikate, Benutzername / Passwort, usw. mit Transport und / oder Nachrichtensicherheit verwenden und nicht selbst eine der Sicherheits Sachen schreiben müssen. Nur konfigurieren-and-go (CAG).

Sicherheit Anmeldeinformationen sind auf den Dienst selbst über die Operation vorhanden, falls müssen Sie es aus dem Code direkt zuzugreifen. Wenn Ihr Code benötigt, um darauf zuzugreifen, jedoch würde ich empfehlen, ein Verhalten, das Schreiben der relevanten Informationen aus der Operation zu extrahieren und sie in etwas mehr anwendungsspezifische, so dass Sie nicht System.ServiceModel verweisen haben überall Sie zugreifen müssen Informationen über Operation.

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