Abbiamo difficoltà a capire come funzionano queste credenziali. In effetti, potrebbero non funzionare come ci aspettavamo che funzionassero. Ecco una spiegazione del problema attuale.Utilizzo di DefaultCredentials e DefaultNetworkCredentials
Abbiamo 2 server che devono comunicare tra loro tramite i servizi web. Il primo (chiamiamolo Server01
) ha un servizio di Windows in esecuzione come account NetworkService. L'altro Server02
ha ReportingServices in esecuzione con IIS 6.0. Il servizio Windows su Server01
sta tentando di utilizzare il servizio Web ReportingServices Server02
per generare report e inviarli tramite e-mail.
Quindi, ecco cosa abbiamo provato finora.
Impostazione delle credenziali in fase di esecuzione (Questo funziona perfettamente bene):
rs.Credentials = new NetworkCredentials("user", "pass", "domain");
Ora, se potessimo utilizzare un utente generico tutto sarebbe andato bene, ma ... non siamo autorizzati a. Quindi, stiamo cercando di utilizzare i DefaultCredetials o DefaultNetworkCredentials e passarlo al RS Webservice:
rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
Oppure:
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
In entrambi i casi non funzionerà. Riceviamo sempre 401 Unuthrorized da IIS. Ora, quello che sappiamo è che se vogliamo dare accesso a una risorsa registrata come NetworkService, dobbiamo concederlo a DOMAIN\MachineName$
(http://msdn.microsoft.com/en-us/library/ms998320.aspx):
concedere l'accesso a un server SQL remoto
Se si sta accedendo a un database su un altro server nello stesso dominio (o in un dominio trusted), le credenziali di rete dell'account del servizio di rete vengono utilizzate per l'autenticazione nel database. Le credenziali dell'account del servizio di rete sono di tipo DomainName \ AspNetServer $, dove DomainName è il dominio del server ASP.NET e AspNetServer è il nome del server Web.
Ad esempio, se l'applicazione ASP.NET viene eseguita su un server denominato SVR1 nel dominio CONTOSO, SQL Server visualizza una richiesta di accesso al database da CONTOSO \ SVR1 $.
Abbiamo presupposto che garantire l'accesso allo stesso modo con IIS avrebbe funzionato. Tuttavia, non è così. O almeno, qualcosa non è impostato correttamente per farlo autenticare correttamente.
Quindi, ecco alcune domande:
Abbiamo letto su "Utenti che impersona" da qualche parte, abbiamo bisogno di impostare questo da qualche parte nel Windows Servizi?
È possibile concedere l'accesso all'account integrato NetworkService a un server IIS remoto?
Grazie per la lettura!
Link eccellente: D – omglolbah
Sarebbe stato bello scrivere la risposta effettiva alla domanda in poche parole (se possibile), invece di inserire il collegamento all'articolo di lettura di 2 ore nel MSDN e incolpare gli altri di non aver letto it :) –
@ d.popov Per me è davvero una sfida riassumere le cose principali. Puoi provare te stesso se ti interessa. Devo dire che la risposta effettiva alla domanda non sarà più breve di quell'articolo. –