Frage

Wir haben eine harte Zeit, herauszufinden, wie sich diese Anmeldeinformationen Objekte Arbeit. In der Tat kann sie nicht arbeiten, wie wir es erwartet hatten, sie zu arbeiten. Hier ist eine Erklärung der aktuellen Ausgabe.

Wir haben zwei Servern, die miteinander über einen Web Service sprechen muss. Der erste (lass es Server01 nennen) ein Windows-Dienst als Netzwerkdienstkonto ausgeführt wird. Der andere Server02 hat ReportingServices läuft mit IIS 6.0. Der Windows-Dienst auf Server01 versucht, die Server02 ReportingServices WebService zu verwenden, um Berichte zu erstellen und per E-Mail senden.

So, hier ist das, was wir versuchen, so weit.

Einstellen der Anmeldeinformationen zur Laufzeit ( Das funktioniert völlig in Ordnung ):

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

Wenn wir nun einen generischen Benutzer alles in Ordnung wäre nutzen könnten, aber ... wir sind nicht erlaubt. Also, wir versuchen, das DefaultCredetials oder DefaultNetworkCredentials zu verwenden und an den RS Webservice übergeben:

rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials

Oder:

rs.Credentials = System.Net.CredentialCache.DefaultCredentials

In beiden Fällen wird nicht funktionieren. Wir bekommen immer 401 Unauthrorized von IIS. Nun, was wir wissen, ist, dass, wenn wir Zugriff auf eine Ressource als Netzwerk angemeldet geben wollen, müssen wir sie gewähren DOMAIN\MachineName$ ( http://msdn.microsoft.com/en-us/library/ms998320.aspx ):

  

Gewähren von Zugriff auf einen Remote-SQL Server

     

Wenn Sie eine Datenbank auf einem anderen Server in der gleichen Domäne (oder in einer vertrauenswürdigen Domäne) zugreift, werden die Netzwerkdienstkonto-Netzwerk-Anmeldeinformationen verwendet, um die Datenbank zu authentifizieren. Das Netzwerkdienstkontos Anmeldeinformationen sind von der Form Domainname \ AspNetServer $, wobei Domainname ist die Domäne des ASP.NET-Servers und AspNetServer ist Ihre Web-Servernamen.

     

Zum Beispiel, wenn die ASP.NET-Anwendung auf einem Server ausgeführt namens SVR1 in der Domäne CONTOSO, der SQL Server sieht eine Datenbank Zugriffsanforderung von Contoso \ SVR1 $.

Wir gingen davon aus, dass der Zugang mit IIS auf die gleiche Weise Gewährung funktionieren würde. Allerdings ist es nicht. Oder zumindest etwas nicht richtig eingestellt, damit er korrekt authentifiziert werden.

So, hier sind einige Fragen:

  1. Wir haben gelesen über "Impersonating Benutzer" irgendwo, tun wir das irgendwo in der Windows Service setzen müssen?

  2. Ist es möglich, den Zugriff auf NetworkService- zu gewähren integriertes Konto auf einen Remote-II-Server?

Vielen Dank für das Lesen!

War es hilfreich?

Lösung

Alle Details, die Sie brauchen, sind in dieser sehr alten Artikel enthalten,

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

Kurz gesagt, wenn Sie finden es verwirrend Fragen wie diese zu beheben, sollten Sie zunächst sorgfältig die technischen Details hinter ASP.NET Identitätswechsel überprüfen.

Andere Tipps

Hier sind einige Dinge, die Sie überprüfen können: - ein SPN (Service Principal Name) für den Berichtsdienst festgelegt; Sie können gute Beispiele in Google finden; - Lassen Sie Delegation (ClientCredentials.Windows.AllowImpersonationLevel)

Ist das Problem, dass Sie Fehler zu IIS authentifizieren, oder andernfalls zu SSRS authentifizieren? Die DOMAIN \ Computername $ Konto benötigt Erlaubnis in SSRS zu erteile den Bericht auszuführen Sie zu automatisieren versuchen.

SSRS hat in der Regel einen ziemlich guten Job zu bekommen IIS richtig konfiguriert ist, so dass Sie sollten nicht mit diesen Einstellungen zu verwirren müssen. Ich überprüfte meine Installation (die SSRS ist 2005 haben sich die Dinge möglicherweise anders in SSRS 2000 war und Sie nicht sagen, welche Version Sie laufen), und es wird festgelegt Windows-Authentifizierung verwendet und hat den Identitätswechsel aktiviert. Das bedeutet, dass IIS sollte im Grunde nur Ihre Anmeldeinformationen werden Authentifizierung (eine korrekte Benutzername / Passwort Validierung), nicht die Genehmigung (Feststellung, ob der Benutzer die Berechtigung, den Bericht in Frage zu laufen hat). IIS übergibt dann die Anmeldeinformationen auf SSRS, die zur Bestimmung seiner eigenen Einstellungen hat, was die Berechtigung Berichte anzeigen Konten haben.

Auch Sie automatisieren können Berichte nach Zeitplan direkt in SSRS zu senden, so können Sie den Windows-Dienst überhaupt nicht erforderlich, wenn die Terminplanung ist recht einfach (das heißt, täglich, wöchentlich, usw.).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top