Pregunta

Tengo una aplicación que utiliza suplantación en todas partes.Pero cuando un usuario inicia sesión como administrador, algunas operaciones requieren que escriba en el servidor.Ahora bien, si estos usuarios no tienen derechos en el servidor real (algunos no los tienen), no les permitirá escribir.

Lo que quiero hacer es desactivar la suplantación solo para un par de comandos.

¿Hay alguna manera de hacer algo como esto?

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

Gracias.

¿Fue útil?

Solución

Asegúrese de que el grupo de aplicaciones tenga los derechos adecuados que necesita.

Luego, cuando desee volver a la identidad del grupo de aplicaciones...ejecute lo siguiente:

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}

Otros consejos

No estoy seguro de si este es el enfoque preferido, pero cuando quise hacer esto, abrí una instancia de un WindowsIdentidad y llamó al Personificar método.Esto permite que el código posterior se haga pasar por un usuario de Windows diferente.Devuelve un Contexto de suplantación de Windows eso tiene un Deshacer método que revierte el contexto de suplantación nuevamente.

Puede desactivar la autenticación para la página y luego hacerse pasar manualmente por el usuario autenticado durante el resto de su código.

http://support.microsoft.com/kb/306158

Esto tiene una referencia a la última parte, pero básicamente te haces pasar por User.Identity.

Esto significará que tendrá que hacerse pasar por alguien al comienzo de cualquier llamada a la página, apagarlo cuando lo necesite y luego volver a encenderlo cuando haya terminado, pero debería ser una solución viable.

Terminé dándole permisos de escritura a las carpetas para "Usuarios autenticados".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top