2012-03-03 24 views
5

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,

  1. Nie wiem bazowego bezpieczeństwo SOAP handshaking (WS-Security)
  2. wiem HTTPS i HTTP Basic Authentication (i wolą szybkość transportu SSL vs za komunikat SOAP krypto/sign-zweryfikować operacji)
  3. 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

  1. Czy wymiana mydła nad HTTPS + podstawowego uwierzytelniania HTTP ok? czy rzadki (= koszmar międzyludzki!) ohyda?
  2. 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; 
        } 
    } 
    

Odpowiedz

5

Znajdziesz SSL + Podstawowe Auth być znacznie więcej niż interoperacyjnych WS-Security.

Jeśli chodzi tylko o integrację typu point to point, to SSL byłby najlepszym rozwiązaniem, jeśli masz bardziej złożoną integrację wielopartnerską z wieloma klientami, to być może będziesz musiał ją rozwiązać z WS -Bezpieczeństwo.

+0

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

+1

Zazwyczaj protokół SSL i uwierzytelnianie i obsługiwane przez serwer WWW, a nie warstwę SOAP, ale nie jest się pewnym konkretnie o WCF – superfell