He logrado suplantar a un usuario con éxito. Uso de la Interoperabilidad del Usuario de Logon, p.ASP.NET se niega a respetar mi autoridad.
[DllImport("advapi32.dll", SetLastError = true)]
static extern bool LogonUser(
string principal,
string authority,
string password,
LogonSessionType logonType,
LogonProvider logonProvider,
out IntPtr token);
Esto funciona bien. Cuando voy a mi ventana inmediata e ingreso WindowsIdentity.GetCurrent().Name
, el usuario suplantado aparece como mi Usuario actual. Cuando lanzo este usuario, vuelve a mi usuario real. No hay problemas aquí - Soy am imitando.
Sin embargo, cuando intento escribir un archivo en un recurso compartido de que el usuario tiene acceso a, me sale:
Access to the path [path name] denied.
.
He podido iniciar sesión en Windows manualmente, ya que el usuario me estoy personificando, navegando y escribiendo un archivo en el recurso compartido. El usuario definitivamente tiene privilegios administrativos para el directorio al que estoy apuntando.
Estoy permitiendo que el usuario final cargue un archivo y utilizando el objeto HttpPostedFileBase
, escriba un archivo en este recurso compartido. Esencialmente, estoy restringiendo la suplantación al bloque de código para cargar el archivo. Una vez que haya finalizado, volverá al usuario LDAP autenticado original, p.
imp = Impersonation.ImpersonateUser("someuser","somepassword");
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
...
hpf.SaveAs(path);
Impersonation.StopImpersonating(imp);
La ruta es correcta.
Cuando guardo el archivo utilizando el método SaveAs
, ¿está respetando mi suplantación?
¿Está intentando escribir el archivo en otra cuenta de la que no tengo conocimiento? Y si es así, ¿cómo puedo cambiar esto?
Parece que no hay mucho control con el método SaveAs
, ni una sola sobrecarga. ¿Hay alguna otra alternativa para usar este objeto que me daría un mayor control sobre mis credenciales?
Has escrito authoritay wrong! ;) –
¿Ha buscado en el registro de eventos de la máquina de destino para ver si hubo acceso denegado o errores de inicio de sesión? – NotMe
¿Has investigado el doble salto como sugerí a continuación? – ironsam