La suplantación en ASP.NET MVC
Tengo una aplicación web MVC en una intranet y quiero poder crear archivos en nuestro servidor FTP para enviarlos a socios externos.
El código para la suplantación utiliza WindowsImpersonationContext.
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
StreamWriter sw = System.IO.File.CreateText("PathOnFTPServer");
sw.Write("data");
impersonationContext.Undo();
Esto es lo que está pasando y la razón de mi pregunta:
Pre personificación
User.Identity.Name: [mis credenciales de Windows]
System.Security.Principal.WindowsIdentity.GetCurrent (). Nombre: NT AUTHORITY \ NETWORK SERVICE
Post personificación
User.Identity: [mis credenciales de Windows]
GetCurrent.Name: [mis credenciales de Windows]
Hacerse pasar por Deshacer
User.Identity: [mis credenciales de Windows]
GetCurrent.Name: NT AUTHORITY \ NETWORK SERVICE
Entonces, antes de que me haga pasar por un personaje, el usuario actual es la cuenta del sistema, pero después de la suplantación, está usando mi cuenta de dominio de Windows que tiene permiso para crear archivos de texto en el servidor FTP. El código funciona localmente mediante el servidor web de Visual Studio, pero no cuando lo implemento en IIS en nuestro servidor de prueba.
Estoy obteniendo un error de acceso denegado. ¿Cuál sería la razón del error cuando se personifica al usuario correcto?