Mam aplikację internetową MVC w intranecie i chcę mieć możliwość tworzenia plików na naszym serwerze FTP w celu wysyłania do partnerów zewnętrznych.Podszywanie się pod ASP.NET MVC
Kod podszywania się używa 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();
Oto co się dzieje, a powodem moje pytanie:
Pre personifikacji
User.Identity.Name: [moje okna poświadczenia]
System.Security.Principal. WindowsIdentity.GetCurrent() Nazwa: NT AUTHORITY \ NETWORK SERVICE
Post personifikacji
User.Identity: [moje okna poświadczenia]
GetCurrent.Name: [moje okna poświadczenia]
Impersonate Cofnij
User.Identity: [moje okna poświadczenia]
GetCurrent.Name: NT AUTHORITY \ NETWORK SERVICE
Tak więc, zanim podam się za użytkownika, bieżącym użytkownikiem jest Konto systemowe, ale po podszywaniu się używa mojego konta domeny Windows, które ma uprawnienia do tworzenia plików tekstowych na serwerze FTP. Kod działa lokalnie przy użyciu serwera WWW Visual Studio, ale nie wtedy, gdy wdrażam go w IIS na naszym serwerze testowym.
Otrzymuję błąd odmowy dostępu. Jaki byłby powód błędu, gdy podszywany jest właściwy użytkownik?
To było dokładnie to, co starałem się rozgryźć. Nie zdawałem sobie sprawy, że podszywanie się nie prowadzi przez maszyny. –
Człowieku, próbowałem podróbki przez kilka dni i nagle uświadomiłeś mi, że powinniśmy iść z delegacją! Wielkie dzięki –