Non eseguire il rollover e aggiungere parametri espliciti: è davvero troppo lavoro!
Controlla le funzionalità di sicurezza WCF: molte sono disponibili! Puoi ad es. proteggere il messaggio e includere le credenziali all'interno del messaggio: tutto pronto, nessun codice aggiuntivo richiesto!
Dai un'occhiata a questo eccellente articolo sulla sicurezza WCF da Michele Leroux Bustamante: http://www.devx.com/codemag/Article/33342
Nel tuo caso, suggerirei la sicurezza dei messaggi con le credenziali nome utente - è necessario configurare questo su entrambe le estremità:
lato server:
<bindings>
<basicHttpBinding>
<binding name="SecuredBasicHttp" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="YourService">
<endpoint address="http://localhost:8000/MyService"
binding="basicHttpBinding"
bindingConfiguration="SecuredBasicHttp"
contract="IYourService" />
</service>
</services>
Ed è necessario applicare le stesse impostazioni sul lato client:
<bindings>
<basicHttpBinding>
<binding name="SecuredBasicHttp" >
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:8000/MyService"
binding="basicHttpBinding"
bindingConfiguration="SecuredBasicHttp"
contract="IYourService" />
</client>
Ora il vostro server e il client sono d'accordo sulla sicurezza - sul client, si sarebbe quindi specificare il nome utente e la password da usare in questo modo:
YourServiceClient client = new YourServiceClient();
client.ClientCredentials.UserName.UserName = "your user name";
client.ClientCredentials.UserName.Password = "top$secret";
Sul lato server, è necessario per impostare il modo in cui vengono convalidate le credenziali dell'utente, in genere contro un dominio Windows (Active Directory) o contro il modello di provider di appartenenze ASP.NET. In ogni caso, se le credenziali dell'utente non possono essere verificate rispetto a quel negozio definito, la chiamata verrà rifiutata.
Spero che questo aiuti un po '- la sicurezza è un grande argomento in WCF e ha un sacco e un sacco di opzioni - si può essere un po' scoraggiante, ma alla fine, di solito ha senso! :-)
Marc
Sembra buono; ti capita di sapere se questo (o qualcosa di simile) è utilizzabile se usi httpwebrequest crudo? Ho uno stack RPC personalizzato che vorrei proteggere allo stesso modo (posso ovviamente chiedere come nuovo queston se è una risposta non banale) –
Dovrebbe fare sì; vedi http://www.silverlightshow.net/items/Cookies-in-Silverlight-Web-Requests.aspx – blowdart
Ta; Lo guarderò ;-p –