Domanda

Stiamo avendo difficoltà a capire come queste credenziali oggetti di lavoro. In realtà, essi potrebbero non funzionare come ci aspettavamo loro di lavorare. Ecco una spiegazione di questo numero.

Abbiamo ottenuto 2 server che ha bisogno di parlare con l'altro attraverso webservices. La prima (chiamiamola Server01) ha un servizio di Windows in esecuzione come account NetworkService. L'altro Server02 ha ReportingServices in esecuzione con IIS 6.0. Il servizio di Windows sul DOMAIN\MachineName$ sta cercando di utilizzare il WebService <=> ReportingServices per generare report e inviarli via e-mail.

Quindi, ecco quello che abbiamo provato fino ad ora.

Impostazione delle credenziali in fase di esecuzione ( Questo funziona perfettamente bene ):

 rs.Credentials = new NetworkCredentials("user", "pass", "domain");

Ora, se potevamo usare un utente generico tutto andrebbe bene, però ... non siamo autorizzati a. Quindi, stiamo cercando di utilizzare i DefaultCredetials o DefaultNetworkCredentials e passarlo al servizio Web RS:

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials

o

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

In entrambi i casi non funzionerà. Siamo sempre ottenendo 401 Unauthrorized da IIS. Ora, quello che sappiamo è che se vogliamo dare accesso a una risorsa registrata come NetworkService, dobbiamo concederlo a <=> ( http://msdn.microsoft.com/en-us/library/ms998320.aspx ):

  

concedere l'accesso a un database di SQL Server remoto

     

Se si accede a un database su un altro server nello stesso dominio (o in un dominio trusted), le credenziali di rete dell'account Servizio di rete vengono utilizzati per l'autenticazione al database. le credenziali dell'account Servizio di rete sono della forma NomeDominio \ AspNetServer $, dove NomeDominio è il dominio del server ASP.NET e AspNetServer è il nome del server Web.

     

Ad esempio, se l'applicazione ASP.NET viene eseguito su un server denominato SVR1 nel dominio CONTOSO, SQL Server vede una richiesta di accesso al database da CONTOSO \ SVR1 $.

Abbiamo ipotizzato che l'accesso allo stesso modo con IIS avrebbe funzionato. Tuttavia, non è così. O almeno, qualcosa non è impostato correttamente per poter autenticare correttamente.

Quindi, ecco alcune domande:

  1. Abbiamo letto di "impersonare utenti" da qualche parte, abbiamo bisogno di impostare questo da qualche parte nel servizio di Windows

  2. E 'possibile concedere l'accesso al NetworkService account predefinito a un server IIS remoto?

Grazie per la lettura!

È stato utile?

Soluzione

Tutti i dettagli necessari sono inclusi in questo vecchio articolo,

http://msdn.microsoft.com/en-us/library /ms998351.aspx

In breve, quando a trovarlo fonte di confusione per risolvere i problemi come questo, si deve prima esaminare i dettagli tecnici che stanno dietro ASP.NET la rappresentazione con attenzione.

Altri suggerimenti

Qui ci sono alcune cose che si potrebbe verificare: - impostare un (Principal Name Service) SPN per il servizio di segnalazione; si possono trovare buoni esempi in Google; - consentire la delega (ClientCredentials.Windows.AllowImpersonationLevel)

Il problema è che si sta non riuscendo per l'autenticazione di IIS o, in mancanza di autenticare a SSRS? L'account di dominio \ MachineName $ potrebbe dover essere concessa l'autorizzazione in SSRS per eseguire il report si sta cercando di automatizzare.

SSRS di solito fa un buon lavoro di ottenere IIS configurato correttamente, quindi non dovrebbe essere necessario a pasticciare con queste impostazioni. Ho ricontrollato la mia installazione (che è SSRS 2005, le cose possono lavorare in modo diverso in SSRS 2000 e non ha detto quale versione si sta eseguendo), ed è impostato per utilizzare l'autenticazione di Windows e ha permesso la rappresentazione. Ciò significa che IIS deve fondamentalmente solo essere autenticato le credenziali (la convalida di un corretto username / password), non autorizza (determinare se l'utente ha il permesso di eseguire il report in questione). IIS poi passa le credenziali a SSRS, che ha le proprie impostazioni per determinare che cosa conti avere il permesso di visualizzare i report.

Inoltre, è possibile automatizzare l'invio di report su base programmata direttamente in SSRS, quindi potrebbe non essere necessario il servizio di Windows a tutti se la vostra programmazione è piuttosto semplice (vale a dire, giornaliera, settimanale, ecc.).

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