Będę więc pierwszym, który przyznał, że niewiele wiem o wewnętrznych składnikach WS-Security. Mam fabrykę usług SOAP, jak poniżej. Podczas korzystania z tej usługi z wewnętrznymi samymi klientami .NET (przy użyciu automatycznie generowanej klasy proxy .cs za pośrednictwem svcutil.exe i wygenerowanego automatycznie WSDL) wszystko jest w porządku. Widzę pierwsze 4 pary uzgadniania SOAP z żądaniem odpowiedzi na żądanie przed piątym "rzeczywistym" (zaszyfrowanym) żądaniem/odpowiedzią SOAP. Rozumiem ogólnie bezpieczeństwo, ale żałuję, że nie znam szczegółów na temat tego konkretnego uzgadniania - myślę, że wykonują kluczową wymianę?SOAP 1.2 przez SSL + podstawowe uwierzytelnianie HTTP lub WS-Security?
W każdym razie, po części dlatego,
- Nie wiem bazowego bezpieczeństwo SOAP handshaking (WS-Security)
- wiem HTTPS i HTTP Basic Authentication (i wolą szybkość transportu SSL vs za komunikat SOAP krypto/sign-zweryfikować operacji)
- chcę zabezpieczyć Comms końcowych SOAP przy jednoczesnym zachowaniu kompatybilności z klientami spoza .NET
Myślałam że należy zrobić wymiany SOAP przez podstawowe uwierzytelnianie HTTP HTTPS +. Więc pytania sprowadzają się do
- Czy wymiana mydła nad HTTPS + podstawowego uwierzytelniania HTTP ok? czy rzadki (= koszmar międzyludzki!) ohyda?
Kontynuacja powyżej: Jak skonfigurować swoją fabrykę usług do zalecanych ustawień? Nie trzeba dodawać, że chcą pozostać mil od uwierzytelniania systemu Windows, który jest bez znaczenia w środowisku Internetowym ...
public class SoapServiceHostFactory : ServiceHostFactory { private Type serviceInterfaceType; public SoapServiceHostFactory(Type serviceInterfaceType) { this.serviceInterfaceType = serviceInterfaceType; } protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses); ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>(); // Enable metadata if (smb == null) { smb = new ServiceMetadataBehavior(); host.Description.Behaviors.Add(smb); } smb.HttpGetEnabled = true; // Enable debugging for service ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>(); if (sdb == null) { sdb = new ServiceDebugBehavior(); host.Description.Behaviors.Add(sdb); } sdb.IncludeExceptionDetailInFaults = true; // SOAP Security configuration WSHttpBinding myBinding = new WSHttpBinding(); myBinding.Security.Mode = SecurityMode.Transport; host.AddServiceEndpoint(serviceInterfaceType, myBinding, ""); return host; } }
Dzięki. Może powinienem opublikować drugą część jako osobne pytanie, ale jak skonfigurować moją fabrykę usług SOAP do wykonywania SSL + Basic Auth? Szczególnie niejasne jest, w jaki sposób Basic Auth wiedzieć, który plik dB/XML, aby wykonać wyszukiwanie przeciwko? Masz powiązania z dostawcą członkostwa? Dzięki! – DeepSpace101
Zazwyczaj protokół SSL i uwierzytelnianie i obsługiwane przez serwer WWW, a nie warstwę SOAP, ale nie jest się pewnym konkretnie o WCF – superfell