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:

  1. Wir haben Lesen Sie über "die Identität der Benutzer" irgendwo müssen wir tun, um diese irgendwo in der Windows-Dienst ?
  2. 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

Schreibe einen Kommentar