2012-12-19 19 views
10

Tentativo di elencare le directory e i file all'interno di una cartella specifica. Questa cartella dipenderà dall'utente corrente (Page.User) che accede dall'autenticazione di Windows (NTLM) e viene richiamato da Active Directory (proprietà homedirectory).Accesso negato all'imitazione di un utente corrente che accede alla cartella di rete

Sto utilizzando un utente del dominio per accedere all'AD e recuperare il percorso della cartella, questo funziona correttamente.

Ciò che fallisce è il recupero delle sottocartelle utilizzando System.IO.DirectoryInfo.GetDirectories() anche con rappresentazione.

Ecco il codice che sto utilizzando per la rappresentazione:

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

Ho verificato che l'utente viene rappresentato ha accesso alla cartella.

Da quanto ho trovato finora sembra che sia necessario configurare la delega o l'autenticazione Kerberos, è vero? Sono questi gli unici modi per ottenere questo? Non dovrebbe essere sufficiente l'impersonificazione?

+1

Hai controllato questo StackOverflow post precedente ..? http://stackoverflow.com/questions/2563724/accessing-password-protected-network-drives-in-windows-in-c/2563809#2563809 – MethodMan

risposta

2

rappresentazione consente l'account del servizio sito web per impersonare (fingere di essere) un altro utente su quella macchina. Quindi, eseguire una query su AD per vedere quali diritti (o l'utente rappresentato) sono autorizzati.

La richiesta di accesso a una condivisione UNC su un'altra macchina richiede all'altra macchina di accettare che l'account del servizio sito Web agisca per conto dell'utente che viene rappresentato. Questo è delegare. L'altra macchina non sta controllando le credenziali dell'utente stesso ma delegando tale controllo al server web.

Se il client si connette al sito da un altro computer (generalmente il caso di server web), allora avete un "doppio salto" dal client al server web per file server UNC.

Suggerisco che è necessario configurare Kerberos (tramite l'utilità SetSPN) e cercare i diritti di delega per l'account del servizio del sito Web (utenti e computer AD di Witihin). In caso di problemi durante l'impostazione, raccomando vivamente uno strumento chiamato DeleConfig.

Problemi correlati