Tengo una aplicación web MVC en una intranet y quiero poder crear archivos en nuestro servidor FTP para enviarlos a socios externos.Suplantación de identidad en ASP.NET MVC
El código para la suplantación usa 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 suplantación
User.Identity.Name: [mis credenciales de Windows]
System.Security.Principal. WindowsIdentity.GetCurrent(). Nombre: NT AUTHORITY \ NETWORK SERVICE
Mensaje suplantación
User.Identity: [mis credenciales de Windows]
GetCurrent.Name: [mis credenciales de Windows]
Impersonate Deshacer
User.Identity: [mis credenciales de Windows]
GetCurrent.Name: NT AUTHORITY \ NETWORK SERVICE
Entonces, antes de suplantar, 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 utilizando el servidor web de Visual Studio, pero no cuando lo despliego en IIS en nuestro servidor de prueba.
Recibo un error de acceso denegado. ¿Cuál sería el motivo del error cuando se está suplantando al usuario correcto?
Esto era exactamente lo que estaba intentando descubrir. No me di cuenta de que la suplantación no se aplicaba a las máquinas. –
Hombre, estuve probando Suplantación por un par de días, ¡y de repente me haces darme cuenta de que deberíamos irnos con la delegación! Muchas gracias –