ASP.NET PowerShell Олицетворение - PullRequest
5 голосов
/ 17 апреля 2010

Я разработал веб-приложение ASP.NET MVC для выполнения сценариев PowerShell.

Я использую веб-сервер VS и могу нормально выполнять сценарии.

Однако требуется, чтобы пользователи могли выполнять сценарии для AD, чтобы выполнять действия, которые не разрешены их учетным записям.

Поэтому я использую олицетворение для переключения удостоверения перед созданием пространства выполнения PowerShell:

            Runspace runspace = RunspaceFactory.CreateRunspace(config);

        var currentuser = WindowsIdentity.GetCurrent().Name;

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

Я проверил, используя учетную запись администратора домена, и я получаю следующее исключение при вызове runspace.Open ():

Исключение безопасности Описание: приложение попыталось выполнить операцию, не разрешенную политикой безопасности. Чтобы предоставить этому приложению необходимые разрешения, обратитесь к системному администратору или измените уровень доверия приложения в файле конфигурации. Сведения об исключении: System.Security.SecurityException: Запрошенный доступ к реестру не разрешен.

Веб-приложение работает с полным доверием, и я явно добавил учетную запись, которую я использую для олицетворения, в группу локальных администраторов машины (хотя группа администраторов домена уже была там).

Я использую вызов logonUser advapi32.dll, чтобы выполнить олицетворение аналогично этому сообщению (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)

Любая помощь приветствуется, так как на данный момент это немного мешает шоу.

Спасибо Ben

1 Ответ

3 голосов
/ 21 апреля 2010

Помогает ли это сообщение в блоге? Приходит прямо от разработчиков PowerShell. По сути, PowerShell запускает новый поток для запуска конвейера, и, поскольку .NET2.0 не позволяет потоку использовать олицетворение из вызывающего потока, он завершается ошибкой.

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

...