2010-04-16 17 views
5

He desarrollado una aplicación web ASP.NET MVC para ejecutar scripts de PowerShell.Suplantación de PowerShell de ASP.NET

Estoy usando el servidor web VS y puedo ejecutar scripts correctamente.

Sin embargo, un requisito es que los usuarios puedan ejecutar scripts contra AD para realizar acciones que sus propias cuentas de usuario no pueden hacer.

Por lo tanto estoy utilizando suplantación para cambiar la identidad antes de crear el espacio de ejecución de PowerShell:

  Runspace runspace = RunspaceFactory.CreateRunspace(config); 

     var currentuser = WindowsIdentity.GetCurrent().Name; 

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

He probado utilizando una cuenta de administrador de dominio y tengo la siguiente excepción al llamar runspace.Open():

Excepción de seguridad Descripción: la aplicación intentó realizar una operación no permitida por la política de seguridad. Para otorgar a esta aplicación el permiso requerido, comuníquese con el administrador del sistema o cambie el nivel de confianza de la aplicación en el archivo de configuración. Detalles de la excepción: System.Security.SecurityException: no se permite el acceso al registro solicitado.

La aplicación web funciona con plena confianza y he agregado explícitamente la cuenta que estoy utilizando para suplantación al grupo de administradores locales de la máquina (aunque el grupo de administradores de dominio ya estaba allí).

estoy usando advapi32.dll llamada LogonUser para realizar la suplantación de una manera similar a este post (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)

Cualquier ayuda apreciada ya que esto es un poco de un tapón de la demostración en el momento.

Gracias Ben

Respuesta

3

¿Esto ayuda entrada de blog? Viene directamente de los desarrolladores de PowerShell. Esencialmente, PowerShell inicia un nuevo hilo para ejecutar la canalización, y dado que .NET2.0 no permite que el hilo use la suplantación del hilo de llamada, falla.

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

+0

Hola James, me llegó a través de este post cuando originalmente y no funcionó para mí. Sin embargo, después de probar hoy en otra máquina (y de asegurarme de que reinicié después de cambiar el archivo aspnet.config, ¡importante!), Pude suplantar a otro usuario con éxito. Gracias –

Cuestiones relacionadas