Ich habe einen einfachen Dienst und versuche, die Authentifizierung einzurichten. Auf dem Client möchte ich, dass der Benutzer sein Windows-Benutzerkonto eingibt. Die WCF verwendet den vom Client bereitgestellten Benutzernamen und das Kennwort und authentifiziert sie gegen die Windows-Authentifizierung.
Hier ist mein Server app.config
%Vor%Hier ist mein Client app.config
%Vor%Hier ist mein Code auf dem Client
%Vor%Aber ich bekomme immer diese Ausnahme:
{"Sicherer Kanal kann nicht geöffnet werden, da die Sicherheitsaushandlung mit dem Remote-Endpunkt fehlgeschlagen ist. Dies kann auf fehlende oder falsch angegebene EndpointIdentity in der EndpointAddress zur Erstellung des Channels zurückzuführen sein. Überprüfen Sie die von EndpointAddress angegebene oder implizierte EndpointIdentity korrekt identifiziert den Remote-Endpunkt. "} {"Die Anforderung für das Sicherheitstoken enthält ungültige oder fehlerhafte Elemente."}
Offenbar haben Sie die Service- und Client-Konfiguration separat (von Hand) generiert. Es ist normalerweise eine gute Idee, die Client-Konfiguration vom Dienst mit svcutil
oder Visual Studio's 'Add Service Reference' zu generieren. Auf diese Weise wissen Sie, dass Sie die Client-Konfiguration erhalten, die der Service-Konfiguration entspricht.
Was Sie wollen, ist möglich, aber WCF erlaubt Ihnen nicht, Ihren Benutzernamen / Passwort-Token im Klartext zu übertragen, wenn Sie wsHttpBinding
verwenden. Dies bedeutet, dass Sie Ihren Dienst entweder mit https hosten oder ein Dienstzertifikat verwenden müssen. Hier ist ein Beitrag mit einigen mehr Details.
Aber ich frage mich auch, warum Sie so etwas wollen. Es könnte eine bessere Idee sein, die integrierte Windows-Authentifizierung zu verwenden. Dies ist sogar die Standardeinstellung für wsHttpBinding
. Auf diese Weise brauchen Sie Ihren / Ihre Kunden nicht, um ihren Windows Benutzernamen / Passwort einzugeben.
Tags und Links .net c# wcf-security