Possiedo un'applicazione Web MVC su una rete Intranet e voglio poter creare file sul nostro server FTP da inviare a partner esterni.Rappresentazione in ASP.NET MVC
Il codice per la rappresentazione utilizza WindowsImpersonationContext.
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
StreamWriter sw = System.IO.File.CreateText("PathOnFTPServer");
sw.Write("data");
impersonationContext.Undo();
Ecco cosa sta succedendo e il motivo della mia domanda:
Pre rappresentazione
User.Identity.Name: [Il mio Windows credenziali]
System.Security.Principal. WindowsIdentity.GetCurrent(). Nome: NT AUTHORITY \ NETWORK SERVICE
Messaggio rappresentazione
User.Identity: [Il mio Windows credenziali]
GetCurrent.Name: [Il mio Windows credenziali]
Rappresenta Undo
User.Identity: [il mio Windows credenziali]
GetCurrent.Name: NT AUTHORITY \ NETWORK SERVICE
Quindi, prima che impersonassi, l'utente corrente è l'account di sistema ma, dopo la rappresentazione, sta usando il mio account di dominio Windows che ha il permesso di creare file di testo sul server FTP. Il codice funziona localmente usando il server Web di Visual Studio ma non quando lo distribuisco su IIS sul nostro server di test.
Viene visualizzato un errore di accesso negato. Quale sarebbe la ragione dell'errore quando viene impersonato l'utente corretto?
Questo era esattamente quello che stavo cercando di capire. Non mi ero reso conto che la rappresentazione non si trasmetteva su tutte le macchine. –
Uomo, stavo provando l'imitazione per un paio di giorni, e improvvisamente mi fai capire che dovremmo andare con la delegazione! Grazie mille –