Udało mi się skutecznie podszyć się pod użytkownika. Używanie LogonUser Interop, np.ASP.NET odmawia uszanowania mojego autorytetu.
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(
string principal,
string authority,
string password,
LogonSessionType logonType,
LogonProvider logonProvider,
out IntPtr token);
To działa dobrze. Kiedy wchodzę do mojego bezpośredniego okna i wpisuję WindowsIdentity.GetCurrent().Name
, podszywany użytkownik pokazuje się jako mój CurrentUser. Kiedy zwalniam tego użytkownika, wraca on do mojego prawdziwego użytkownika. Tutaj nie ma problemów - podszywanie się pod am.
Jednak gdy próbuję zapisać plik do udziału, że użytkownik ma dostęp do otrzymuję:
Access to the path [path name] denied.
.
Byłem w stanie ręcznie zalogować się do systemu Windows jako użytkownik podszywający się, nawigowałem i zapisałem plik do udziału. Użytkownik definitywnie ma dostęp administracyjny do katalogu, który wybieram.
Pozwalam użytkownikowi końcowemu na przesłanie pliku, a przy użyciu obiektu HttpPostedFileBase
napisz plik do tego udziału. Zasadniczo ograniczam podszywanie się do bloku kodu, aby przesłać plik. Po zakończeniu wraca do pierwotnego uwierzytelnionego użytkownika LDAP, np.
imp = Impersonation.ImpersonateUser("someuser","somepassword");
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
...
hpf.SaveAs(path);
Impersonation.StopImpersonating(imp);
Ścieżka jest poprawna.
Kiedy zapisuję plik przy użyciu metody SaveAs
, czy respektuje on moje podszywanie się?
Czy próbujesz zapisać plik pod innym kontem, którego nie znam? A jeśli tak, jak mogę to zmienić?
Wygląda na to, że nie ma zbyt dużej kontroli przy użyciu metody SaveAs
- ani jednego przeciążenia. Czy istnieją inne alternatywy dla używania tego obiektu, co dałoby mi większą kontrolę nad moimi referencjami?
Podałeś błędny autorytet! ;) –
Czy przejrzałeś dziennik zdarzeń komputera docelowego, aby sprawdzić, czy nie było odmowy dostępu lub błędy logowania? – NotMe
Czy zbadałeś podwójny hop, jak sugerowałem poniżej? – ironsam