2012-12-19 13 views
10

Der Versuch, die Verzeichnisse und Dateien in einem bestimmten Ordner aufzulisten. Dieser Ordner hängt vom aktuellen Benutzer (Page.User) ab, der sich von der Windows-Authentifizierung (NTLM) anmeldet und aus der Active Directory-Eigenschaft (homedirectory) abgerufen wird.Zugriff verweigert, wenn angenommen wird, dass der aktuelle Benutzer auf den Netzwerkordner zugreift

Ich verwende einen Domänenbenutzer, um auf die AD zugreifen und den Ordner Speicherort abrufen, das funktioniert gut.

Was schlägt fehl ist das Abrufen der Unterordner mit System.IO.DirectoryInfo.GetDirectories() auch mit Identitätswechsel.

Hier ist der Code, den ich für den Identitätswechsel mit:

System.Security.Principal.WindowsImpersonationContext impersonationContext; 
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate(); 

ich überprüft haben, dass der Benutzer Zugriff hat auf den Ordner verkörperten.

Aus was ich bisher gefunden habe scheint, dass ich entweder Delegierung oder Kerberos-Authentifizierung einrichten muss, ist das wahr? Sind dies die einzigen Möglichkeiten, dies zu erreichen? Sollte nicht Nachahmung genug sein?

+1

Haben Sie diesen Stackoverflow vorheriges Posting ..? http://stackoverflow.com/questions/2563724/accessing-password-protected-network-drives-in-windows-in-c/2563809#2563809 – MethodMan

Antwort

2

Identitätswechsel ermöglicht es dem Website-Dienstkonto, sich als ein anderer Benutzer auf diesem Computer zu imitieren (so zu tun). Sie können also AD abfragen, um zu sehen, welche Rechte Sie (oder der imitierte Benutzer) haben.

Wenn Sie den Zugriff auf eine UNC-Freigabe auf einem anderen Computer anfordern, wird der andere Computer aufgefordert, zu akzeptieren, dass das Website-Dienstkonto im Namen des Benutzers handelt, der die Identität angenommen hat. Dies delegiert. Der andere Computer überprüft die Benutzeranmeldeinformationen nicht selbst, sondern delegiert diese Prüfung an den Webserver.

Wenn der Client die Website von einem anderen Computer verbindet (normalerweise der Fall für Webserver), dann haben Sie einen "Doppelsprung" vom Client zum Webserver zum UNC-Dateiserver.

Ich würde vorschlagen, dass Sie Kerberos konfigurieren müssen (über das SetSPN-Dienstprogramm) und sehen Sie die Aktivierung Delegierungsrechte für das Website-Dienstkonto (mit AD-Benutzer und Computer). Wenn Sie Probleme beim Einrichten haben, empfehle ich herzlichst ein Tool namens DeleConfig.

Verwandte Themen