Verwenden von DefaultCredentials und DefaultNetworkCredentials
Wir haben eine harte Zeit, herauszufinden, wie diese Anmeldeinformationen Objekten arbeiten. In der Tat, Sie dürfen nicht arbeiten, wie wir erwarten, dass Sie funktionieren. Hier eine Erklärung der aktuellen Ausgabe.
Haben wir 2 Server, die Bedürfnisse zu sprechen, miteinander über webservices. Der erste (nennen wir es Server01
) ist ein Windows-Dienst ausgeführt, wie der NetworkService-Konto. Der andere Server02
hat ReportingServices läuft mit IIS 6.0. Der Windows-Dienst auf Server01
ist zu versuchen, die Server02
ReportingServices WebService, um Berichte zu generieren und senden Sie Sie per E-Mail.
So, hier ist, was wir versucht, so weit.
Einstellung der Anmeldeinformationen zur Laufzeit (Das funktioniert völlig in Ordnung,):
rs.Credentials = new NetworkCredentials("user", "pass", "domain");
Nun, wenn wir könnten, verwenden Sie einen generischen Benutzer alles wäre in Ordnung sein, aber... wir sind nicht erlaubt. Also, wir versuchen, mit DefaultCredetials oder DefaultNetworkCredentials und übergeben es an die RS Webservice:
rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
Oder:
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
So oder so nicht funktionieren. Wir sind immer 401 Unauthrorized von IIS. Nun, was wir wissen, ist, dass, wenn wir wollen, zu geben, Zugang zu einer Ressource angemeldet als Netzwerkdienst, wir müssen es gewähren zu DOMAIN\MachineName$
(http://msdn.microsoft.com/en-us/library/ms998320.aspx):
Gewähren von Zugriff für einen Remote-SQL-Server
Wenn Sie den Zugriff auf eine Datenbank auf einem anderen server in derselben Domäne oder in einer vertrauenswürdigen Domäne), die Network Service-Konto-Anmeldeinformationen werden verwendet, um die Authentifizierung an der Datenbank. Das Network Service-Konto-Anmeldeinformationen sind von der form DomainName\AspNetServer$, wobei DomainName ist der Domänenname der ASP.NET server und AspNetServer ist Ihre Web-server-Namen.
Zum Beispiel, wenn Ihr ASP.NET die Anwendung läuft auf einem server mit dem Namen SVR1 in der Domäne "CONTOSO", der SQL-Server sieht ein Datenbank-Zugriffs-Anforderung von CONTOSO\SVR1$.
Sind wir davon ausgegangen, dass die Gewährung von Zugang auf die gleiche Weise mit IIS arbeiten würde. Doch, tut es nicht. Oder zumindest, etwas ist nicht richtig eingestellt für die es sich zu authentifizieren, richtig.
So, hier sind einige Fragen:
- Wir haben Lesen Sie über "die Identität der Benutzer" irgendwo müssen wir tun, um diese irgendwo in der Windows-Dienst ?
- Ist es möglich, den Zugriff auf den Netzwerkdienst built-in-Konto auf einem remote-IIS-server ?
Vielen Dank für das Lesen!
InformationsquelleAutor der Frage Allov | 2009-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle details, die Sie benötigen, sind enthalten in diesem sehr alten Artikel,
http://msdn.microsoft.com/en-us/library/ms998351.aspx
Kurz, wenn Sie finden es verwirrend, um Probleme zu beheben, wie diese, Sie sollten zuerst überprüfen Sie die technischen details hinter ASP.NET Identitätswechsel gezielt.
InformationsquelleAutor der Antwort Lex Li
Hier sind einige Dinge, die Sie heraus überprüfen konnten:
- stellen Sie einen SPN (Service Principal Name) für den reporting-service, finden Sie gute Beispiele in google;
- Zulassen der Delegierung (ClientCredentials.Windows.AllowImpersonationLevel)
InformationsquelleAutor der Antwort sowee15
Ist das problem, dass Sie andernfalls zur Authentifizierung an IIS oder, in Ermangelung, sich zu authentifizieren, um SSRS? Der DOMÄNE\Computername$ Konto ist, benötigen Sie möglicherweise die Erlaubnis erteilt, in SSRS, um den Bericht auszuführen, die Sie versuchen zu automatisieren.
SSRS macht in der Regel einen ziemlich guten job zu bekommen, IIS richtig konfiguriert, so sollten Sie nicht brauchen, um Durcheinander mit diesen Einstellungen. Ich doppelt überprüft meine installation (die SSRS 2005, Dinge, die möglicherweise gearbeitet haben, anders als in SSRS 2000 und Sie sagen nicht, welche version Sie ausführen), und es ist für die Verwendung der Windows-Authentifizierung und ist der Identitätswechsel aktiviert ist. Das bedeutet, dass IIS sollte im Grunde nur die Authentifizierung Ihrer Anmeldeinformationen (Validierung eine korrekte Benutzername/Passwort), nicht genehmigt (bestimmen, ob dieser Benutzer über die Berechtigung zum ausführen des Berichts in Frage). IIS übergibt die Anmeldeinformationen an SSRS, die hat seine eigenen Einstellungen für die Bestimmung, welche Konten die Berechtigung zum anzeigen von berichten.
Können, können Sie auch automatisieren, senden Berichte auf regelmäßiger basis direkt in SSRS, so müssen Sie möglicherweise nicht die Windows-Dienst, wenn Ihre Planung ist ziemlich basic (D. H., täglich, wöchentlich, etc.).
InformationsquelleAutor der Antwort Joel C