Quindi sarò il primo ad ammettere che conosco poco degli internals WS-Security. Ho una fabbrica di servizi SOAP come di seguito. Quando si utilizza questo servizio con client .NET solo test interni (utilizzando la classe proxy .cs autogenerata via svcutil.exe + WSDL generato automaticamente) tutto va bene. Riesco a vedere le prime 4 sequenze di handshaking SOAP richiesta-risposta di sicurezza prima della 5a richiesta/risposta SOAP "reale" (crittografata). Capisco la sicurezza in generale, ma vorrei sapere i dettagli di questo specifico handshaking, suppongo che stiano eseguendo uno scambio di chiavi?SOAP 1.2 su SSL + autenticazione di base HTTP o WS-Security?
In ogni caso, in parte perché
- non so il titolo sottostante SOAP handshake (WS-Security)
- so HTTPS e autenticazione HTTP di base (e preferiscono la velocità del trasporto SSL vs per messaggio SOAP crypto/sign-verificare le operazioni)
- voglio assicurare le comunicazioni SOAP endpoint pur conservando la compatibilità con i client non NET
stavo pensando che dovrei fare scambiando SOAP su HTTPS + autenticazione di base HTTP. Così le domande bollire per
- sono scambi SOAP su HTTPS + autenticazione HTTP di base ok? o un raro abominio (= incubo interopatico!)?
Followup to above: Come configurare la fabbrica di servizi in base alle impostazioni consigliate? Inutile dire, voglio stare miglia di distanza da autenticazione di Windows, che è privo di significato in un ambiente internet ...
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; } }
Grazie. Forse dovrei postare la seconda parte come una domanda separata, ma come potrei configurare il mio factory di servizi SOAP per fare SSL + Basic Auth? Soprattutto non è chiaro in che modo l'Auth di base dovrebbe sapere a quale file dB/XML eseguire la ricerca? Legare in qualche provider di appartenenza? Grazie! – DeepSpace101
In genere SSL e autenticazione gestiti dal server Web anziché dal livello SOAP, ma non sono sicuri di WCF in particolare – superfell