Jak rozpocząć wątek w kontekście bezpieczeństwa innego użytkownika? Kiedy proces rozpoczyna wątek normalnie, kontekst zabezpieczeń jest również przekazywany, ale jak uruchomić wątek w innym kontekście zabezpieczeń z dyrektorem innego użytkownika?Jak uruchomić wątek w innym kontekście zabezpieczeń?
Odpowiedz
Wierzę, że można ustawić CurrentPrincipal
jako pierwszą operację kodu wątku po rozpoczęciu wątku, a dopiero potem rozpocząć wykonywanie kodu, który ma działać z drugą wartością główną.
To powinno obsłużyć wszystkie kontrole oparte na rolach .NET. Jeśli potrzebujesz podszywania się pod połączenia do systemu operacyjnego, możesz podszyć się pod numer WindowsIdentity
.
Code (może lub nie może pracować - nie testowałem go):
public void Run(object principalObj) {
if (principalObj == null) {
throw new ArgumentNullException("principalObj");
}
IPrincipal principal = (IPrincipal)principalObj;
Thread.CurrentPrincipal = principal;
WindowsIdentity identity = principal.Identity as WindowsIdentity;
WindowsImpersonationContext impersonationContext = null;
if (identity != null) {
impersonationContext = identity.Impersonate();
}
try {
// your code here
} finally {
if (impersonationContext != null) {
impersonationContext.Undo();
}
}
}
...
Thread thread = new Thread(Run);
thread.Start(yourPrincipal);
Fragment kodu na stronie byłby miły. Myślę, że przepływ ExecutionContext powinien być również wyłączony. – TrustyCoder
Dlaczego przepływ "ExecutionContext" powinien być wyłączony? Podczas korzystania z podszywania się (tak jak to zrobiłem tutaj), "SecurityContext" z 'ExecutionContext' jest aktualizowany (sprawdzany za pomocą Reflectora, dzieje się to w wewnętrznej metodzie' UpdateThreadWI' w implementacji MS). – Lucero
wykonałeś to zadanie dla pytającego pytającego? –
mam stosowanych technik like this do podszywania się z sukcesu.
Określenie „personifikacji” w kontekście programowania odnosi się do techniki, która wykonuje kod pod inny kontekst użytkownika niż użytkownik, który pierwotnie rozpoczął aplikację, tj kontekście użytkownika jest tymczasowo zmieniane raz lub wiele razy podczas wykonywania aplikacji.
Powodem wykonania tej czynności jest wykonanie zadania, które nie jest dozwolone dla bieżącego użytkownika, o którym mowa w bieżącym użytkowniku. . Oczywiście można przyznać użytkownikowi Wykonywanie aplikacyjnych kolejne przywileje, ale zazwyczaj jest to zły pomysł (ze względu na ograniczenia bezpieczeństwa) lub niemożliwe (np jeśli nie mają pełny dostęp administracyjny do maszynie do Zrób tak).
- 1. ApplicationContextInitializer w kontekście innym niż web Spring?
- 2. pthreads: jak uruchomić kod działa w jednym kontekście gwintowanym
- 3. W jakim kontekście wątek jądra działa w systemie Linux?
- 4. Jak uruchomić skrypt ruby w kontekście pakietu bundler?
- 5. Jak uruchomić skrypt F # w kontekście aplikacji C#
- 6. CUpewnij: Jak uruchomić add_custom_command przed wszystkim innym
- 7. Jak zrobić Cienki uruchomić na innym porcie?
- 8. Kwerenda zawiera odniesienia do elementów zdefiniowanych w innym kontekście danych
- 9. Jak ponownie uruchomić wątek w C# .Net 4.0?
- 10. Tworzenie okna w innym wątku (nie główny wątek)
- 11. Jak uruchomić skrypt tcl w innym skrypcie tcl?
- 12. Pytanie: jak uruchomić zadanie na innym komputerze w jednym podręczniku?
- 13. Jak uruchomić Redis w oknie dokowanym z innym plikiem konfiguracyjnym?
- 14. Błąd: „Węzeł być włożona jest z innym kontekście dokumentu”
- 15. Wywoływanie metod w kontekście QThread
- 16. Jak mieć kontekst ochrony w kontekście dziecięcym
- 17. Jak uruchomić serwer meteorytów na innym adresie IP?
- 18. Jak uruchomić program wykonywalny z innym plikiem konfiguracyjnym?
- 19. Jak uruchomić Nginx proces główną z innym użytkownikiem
- 20. Czy wątek trojański (? :) wątek jest bezpieczny w C#?
- 21. Przerwać wątek?
- 22. Jak mogę zapewnić bezpieczeństwo wątków w następującym kontekście?
- 23. Jak wyłączyć menedżera zabezpieczeń Java?
- 24. Jak utworzyć wątek w WinForms?
- 25. Jak zrestartować wątek w java?
- 26. Threadpool w kontekście IIS
- 27. Jak widżet w innym widżecie w QT?
- 28. WCF błąd okien uwierzytelniania zabezpieczeń
- 29. WCF - wyłączanie zabezpieczeń w nettcpbinding (C#)
- 30. Jak ustawić null Integer w kontekście wiosennej
Powiązane [post] (https://stackoverflow.com/a/7250145/465053) - Jak podszyć się pod konto AD, aby uruchomić fragment kodu podczas uruchamiania aplikacji? – RBT