2010-04-16 3 views
5

I opracowali ASP.NET MVC Web Application do wykonywania skryptów PowerShell.ASP.NET PowerShell personifikacji

używam VS serwer WWW i może wykonywać skrypty w porządku.

jednak wymogiem jest to, że użytkownicy są w stanie wykonywać skrypty przed ne do wykonywania czynności, które ich własne konta użytkowników nie mogą zrobić.

Dlatego używam personifikacji przełączyć tożsamość przed utworzeniem runspace PowerShell:

  Runspace runspace = RunspaceFactory.CreateRunspace(config); 

     var currentuser = WindowsIdentity.GetCurrent().Name; 

     if (runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen) { 
      runspace.Open(); 
     } 

Ja testowałem przy użyciu konta administratora domeny i otrzymuję następujący wyjątek podczas wywoływania runspace.Open():

Wyjątek bezpieczeństwa Opis: aplikacja próbował wykonać operację niedozwolone przez politykę bezpieczeństwa. Aby udzielić tej aplikacji wymaganego pozwolenia, skontaktuj się z administratorem systemu lub zmień poziom zaufania aplikacji w pliku konfiguracyjnym. Szczegóły wyjątku: System.Security.SecurityException: Żądany dostęp do rejestru jest niedozwolony.

Aplikacja internetowa działa w pełnym zaufaniu i jednoznacznie dodałem konto, którego używam do podszywania się pod grupę lokalnych administratorów komputera (mimo że grupa administratorów domeny już tam była).

Używam Advapi32.dll wywołanie LogonUser wykonać personifikację w sposób podobny do tego postu (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)

Każda pomoc mile widziane, ponieważ jest to trochę pokaż korkiem w tej chwili.

Dzięki Ben

Odpowiedz

3

Czy ten wpis na blogu pomocy? Pochodzi prosto od programistów PowerShell. Zasadniczo PowerShell uruchamia nowy wątek, aby uruchomić potok, a ponieważ .NET2.0 nie zezwala na wątek na podszywanie się z wątku wywołującego, kończy się niepowodzeniem.

http://blogs.msdn.com/powershell/archive/2007/09/10/impersonation-and-hosting-powershell.aspx

+0

Cześć James, I nie natknąć się ten post, gdy pierwotnie i to nie działa dla mnie. Jednak po wypróbowaniu dzisiaj na innym komputerze (i upewnieniu się, że zrobiłem restart po zmianie pliku aspnet.config - ważne!) Udało mi się z powodzeniem podszyć się pod innego użytkownika. Dzięki –