Domanda

I ha scritto un costume WCF vincolante un po 'indietro per consentire il mio carico farm equilibrato per ospitare servizi via IIS. Il motivo per il legame usanza era che ogni server non ha avuto SSL ma necessaria la capacità di accettare una credenziale cliente di nome utente + password. Il proxy di fronte a questa fattoria ha SSL in modo che il traffico sarebbe essere criptato all'esterno del firewall. Questo legame personalizzato funziona bene ma ora sono al punto in cui ho bisogno di guardare il traffico dalla mia macchina locale e voluto fare questo w / SSL nel mix.

Il problema è questo - sul client .NET se ho impostato il mio modo di sicurezza = "TransportWithMessageCredential" Mi deve avere SSL altro ottengo l'errore divertimento "schema non valida, atteso https"

E 'possibile scrivere qualcosa su misura per il cliente di "ignora" che SSL manca ma ancora farmi passare il nome utente + password tramite l'intestazione SOAP?

È stato utile?

Soluzione

Yup, ho scritto un post su questo blog un po 'indietro chiamato "How To: SSL Passthrough con WCF --ovvero-- TransportWithMessageCredential su HTTP pianura".

Il corto di esso è che è necessario per creare il proprio HttpTransportBindingElement sottoclasse che "bugie" di fornire la sicurezza.

Altri suggerimenti

C'è un Hotfix for .NET 3.5 SP1 che aggiunge una proprietà AllowInsecureTransport al SecurityBindingElement . Questo sarà anche in .NET 4 beta 2.

presumo, sulla vostra abitudine di legame, che si ottiene anche un errore se si utilizza la modalità di protezione = "messaggio"? Un legame personalizzata non era davvero necessario, dal momento che (se non sbaglio) è possibile utilizzare la modalità di sicurezza con wsHttpBinding = "messaggio" (che non richiedono SSL).

Un'altra alternativa è quella di generare solo un certificato SSL da soli, installarlo in IIS, e attuare una fiducia tutta la politica certificato nel codice chiamante, ma questo è generalmente malvista (come l'invio di nomi utente e password su un canale non sicuro) .

Una terza opzione è quella di cambiare le operazioni del contratto di accettare i nomi utente e le password (o una sorta di token) come parametro, o cambia le contratti dati in modo da poter inviare le informazioni con qualsiasi oggetto si può già essere l'invio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top