2009-06-04 4 views
1

Ich habe die WCF-Sicherheit in einem scheinbar vergeblichen Versuch durchsucht, ein Dienst-/Endpunktverhalten zu erstellen, mit dem ich die Client-Benutzernamen/Kennwortberechtigungen angeben kann (aber nicht, um sie zu authentifizieren). Ich bin glücklich, die eingebaute Funktionalität dafür zu benutzen). Meine Absicht ist, den Benutzernamen (kein Passwort) in der Querystring für die Verwendung mit JSONP zu liefern.Benutzerdefinierter Clientanmeldungs-Typ (Benutzername in Abfragezeichenfolge)

Bis jetzt, es macht nur mein Gehirn leckt meine Ohren aus. Kann mir jemand in die richtige Richtung zeigen?

Während wir hier sind, kann jemand den Unterschied zwischen clientCredentials und serviceCredentials erklären?

Ich benutze WCF mit .NET 3.5 SP1.

Bearbeiten: Ich habe durch den MSDN-Artikel [How To: Erstellen benutzerdefinierter Client-und Service-Anmeldeinformationen | http://msdn.microsoft.com/en-us/library/ms730868(VS.85).aspx] aber es ist besonders gut, Ihnen zu zeigen, was zu erweitern ist, aber nicht die Verantwortlichkeiten von jedem sind. Selbst mit reflector kann ich einfach nicht herausfinden, welche Klasse/Schnittstelle die Verantwortung hat, die Credentials aus der Anfrage herauszuholen (sei es aus einem HTTP-Header oder was auch immer).

Bearbeiten 2: Ich möchte vermeiden, Aspnet-Kompatibilität verwenden, da es eine Named-Pipes-Bindung (mit einer traditionellen Authentifizierungsmethode) sein wird.

Bearbeiten 3: Bevor jemand darüber nachdenkt, bin ich mir des Formats username: [email protected] bewusst, aber es ist in IE8 (zumindest) deaktiviert. Es scheint automatisch zurückgewiesen zu werden, auch wenn es in einem < Skript> -Tag auf einer Testseite enthalten ist.

+0

Ich bin auch auf der Suche nach einer Antwort auf diese Frage, obwohl ich HTTP-Cookies anstelle eines QueryString-Arguments verwenden möchte.Und ich habe auch den MSDN-Artikel zum Erstellen angepasster Client- und Dienstanmeldeinformationen gelesen, und ich stimme zu, dass er nicht zeigt, wie Sie die Anmeldeinformationen tatsächlich an die Anforderung anhängen. Ich werde hier zurück posten, wenn ich etwas finde. –

Antwort

3

ClientCredentials sind diejenigen, die der Client dem Dienst bereitstellt. ServiceCredentials sind diejenigen, die der Dienst dem Client zur Verfügung stellt, wenn die Konfiguration gegenseitige Authentifizierung erfordert.

Auf der Serviceseite:

WSHttpBinding b = new WSHttpBinding(SecurityMode.Transport); 
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 

Auf der Clientseite:

proxy.ClientCredentials.UserName.UserName = "username"; 
proxy.ClientCredentials.UserName.Password = "password"; 

ODER

Wenn Sie Basichttpbinding verwenden, eine look at this nehmen.

hier ein ClientCredentialType von Benutzername „Zeigt an, dass der Client einen Benutzernamen Credential unter Verwendung authentifiziert werden.“

ODER

Here is an example ein benutzerdefinierter Benutzername/Passwort-Validator zu schaffen.

Ich hoffe, dass hier etwas hilft. :-)

Verwandte Themen