Ho un servizio WCF che utilizza BasicHttpBinding con l'autenticazione di Windows. La maggior parte dei client sono account di dominio e si connettono al servizio utilizzando le loro credenziali predefinite.Come specificare le credenziali di Windows nel file di configurazione del client WCF
Ora desidero connettermi al servizio da un client ASP.NET in esecuzione con un account locale. Desidero connettermi al servizio WCF utilizzando le credenziali di Windows (dominio \ utente e password) disponibili per l'applicazione ASP.NET.
So che posso farlo nel codice utilizzando ClientBase < T> .ClientCredentials.
C'è un modo per specificare le credenziali (dominio \ utente e password) nel file web.config del client in modo da non dover cambiare il codice?
EDIT
Se non può essere fatto nel file di configurazione, c'è un modo di usare System.Net.ICredentials o System.Net.NetworkCredential come credenziale per un servizio WCF?
.NET Framework fornisce questi come un modo omogeneo di fornire credenziali di rete, ma con WCF questo sembra essere stato gettato a favore di un nuovo sistema incompatibile basato sulla classe System.ServiceModel.Description.ClientCredentials non correlata.
EDIT 2
Accettare la risposta di Marc alla domanda iniziale - sembra che ci sia alcun modo per farlo nel file di configurazione del client :(
vorrei vedere questo come un deficit di WCF - Non accetto che Microsoft dovrebbe deliberatamente scoraggiarci dal mettere le credenziali nel file di configurazione - dopo tutto devono essere archiviate da qualche parte, e il Framework include funzionalità per crittografare il file di configurazione. Suppongo di poter creare un BehaviorExtensionElement personalizzato per questo , ma dovrebbe essere disponibile fuori dalla scatola
È anche un po 'incoerente: l'elemento di configurazione system.net/mailSettings/smtp/network consente di specificare le credenziali, quindi perché non utilizzare WCF?
Per quanto riguarda la seconda domanda sull'uso System.Net.NetworkCredential, sembra da this blog che sia possibile, almeno quando si utilizza l'autenticazione di Windows, con il seguente codice:
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);
"... nel file di configurazione, in formato testo" non è generalmente una buona cosa, ma nel file di configurazione criptato è OK. – Joe
@marc_s Non è ancora disponibile per l'impostazione tramite file di configurazione? –
@Johnny_D: no, non per quanto ne so. –