Mi servidor Windows Server 2008 aloja una aplicación ASP.net que utiliza suplantación. La aplicación funciona siempre que el usuario suplantado permanezca conectado al servidor. Sin embargo, cuando el usuario cierra sesión, los clientes ya no pueden ver las páginas web. En su lugar, reciben un error críptico.
¿Cómo puedo configurar el servidor para que funcione sin que el usuario suplantado permanezca conectado? Gracias de antemano.
Respuesta1
Encontré el problema y la solución.
Problema:
El servicio web utiliza un certificado X509Certificate2. Los constructores de la clase X509Certificate2 intentan importar el certificado al perfil de usuario de la cuenta de usuario en la que se ejecuta la aplicación. Muchas veces, las aplicaciones ASP.NET y COM+ se hacen pasar por clientes. Cuando lo hacen, no cargan los perfiles de usuario del usuario suplantado por motivos de rendimiento. Por lo tanto, no pueden acceder al almacén de certificados "Usuario" del usuario suplantado.
El mismo código funcionará cuando se ejecute desde una aplicación interactiva o un servicio de Windows que se ejecute con una cuenta de usuario porque el perfil se carga cuando el usuario inicia sesión o se inicia el servicio.
Solución:
Un administrador en la máquina donde se ejecuta la aplicación ASP.NET/COM+ debe instalar el certificado en el almacén de certificados de la máquina, llamado almacén "Computadora local". Esto debe hacerse cuando la aplicación ASP.NET/COM+ esté instalada.
El administrador debe configurar los permisos en la clave privada asociada con el certificado para otorgar acceso a la clave al proceso ASP.NET y a los usuarios suplantados. Esto es necesario porque solo la cuenta de usuario que instala el certificado o la clave privada en el almacén de la "Computadora local" puede usar posteriormente la clave privada RSA asociada con el certificado. Utilice WinHttpCertCfg.exe disponible en las herramientas del kit de recursos de Windows (http://msdn2.microsoft.com/en-us/library/aa384088.aspx(http://msdn2.microsoft.com/en-us/library/aa384088.aspx) ) para configurar los permisos.
El código de la aplicación ASP.NET/COM+ debe utilizar el certificado instalado en lugar de intentar instalar uno desde un archivo PFX. Haga que el código ubique el certificado instalado usando la clase X509Store.
Verhttp://support.microsoft.com/kb/948154para más información.