Ich habe sowohl einen WCF-Client als auch einen Remote-Internet-WCF-Server geschrieben.C#: Methode zum Hinzufügen der WCF-Authentifizierung, Benutzername + SSL?
Auf dem WCF-Remoteserver wird WPF ausgeführt, das in einem herkömmlichen Windows-Dienstwrapper (d. H. Nicht IIS) gehostet wird.
Derzeit funktioniert es perfekt mit grundlegenden HTTP-Bindung. Ich verwende Visual Studio 2010 + .NET 4.0 + C#.
Kann mir jemand in die Richtung der richtigen Schritte zeigen, um meinen Code zu ändern, so dass ich Benutzername + SSL-Authentifizierung hinzufügen kann?
EDIT:
Im Dienst Ende habe ich außer Kraft gesetzt UserNamePasswordValidator wie folgt:
public class CustomUserNameValidator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
Console.WriteLine("Got to here");
}
}
Im Dienst Ende habe ich einen Link zu dem Benutzernamen Prüfklasse angegeben haben:
ServiceHost serviceHost = new ServiceHost(typeof(PhiFeedServer.PhiFeed)); // ,baseAddress);
const bool passswordAuthentication = true;
if (passswordAuthentication)
{
// These two lines switch on username/password authentication (see custom class "CustomUserNameValidator" in common file PhiFeed.svc.cs)
// See http://msdn.microsoft.com/en-us/library/aa354513.aspx
serviceHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom;
serviceHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = new CustomUserNameValidator();
}
// Start the service
serviceHost.Open();
Auf der Client-Seite:
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:20000/PhiFeed?wdsl");
BasicHttpBinding serviceBinding = new BasicHttpBinding();
serviceBinding.ReceiveTimeout = new TimeSpan(0, 0, 120);
proxy = new PhiFeedClient(serviceBinding, endpointAddress);
proxy.ClientCredentials.UserName.UserName = "myusername";
proxy.ClientCredentials.UserName.Password = "mypassword";
Wenn ich jedoch alles ausführe, ruft es nie den Benutzernamen validator - was ist los?
funktioniert es auf basichttp? Ich würde persönlich wsHttpBinding oder net.tcp Bindung bevorzugen. weil Sie das Zertifikat damit verwenden können :). es wäre dann gesichert – user507779
Meine aktuelle Einrichtung verwendet wsHttpBinding, so dass es ein Zertifikat verwenden kann. Der obige Code funktionierte nicht richtig. – Contango