Cierre de autenticación de Windows de ASP.NET

¿Cómo se desconecta al usar la autenticación de Windows en ASP.NET como este web.config?

 

Ya he intentado lo siguiente sin éxito. Redirige, pero no cierra la sesión del usuario.

 void logoutButton_Click(object sender, EventArgs e) { HttpContext.Current.Session.Clear(); HttpContext.Current.Session.Abandon(); ViewState.Clear(); FormsAuthentication.SignOut(); Response.Redirect("/"); } 

Información de fondo:

Tengo que usar la autenticación de Windows porque necesito suplantar la identidad usando Active Directory para obtener acceso a los archivos locales. Y no puedo suplantar el uso de la autenticación Forms porque HttpContext.Current.User.Identity no será una WindowsIdentity . Suplantar usando Autenticación de formularios

Ningún botón de cierre de sesión del lado del servidor funcionará cuando se use la autenticación “Windows”. Debe utilizar la autenticación “Formularios” si desea un botón de cierre de sesión o cerrar el navegador del usuario.

Para los navegadores IE solamente , puede usar el siguiente javascript para cerrar la sesión del usuario si usa la Autenticación de Windows. (Nota: no se requiere cerrar el navegador, pero se recomienda ya que el usuario podría estar usando un navegador que no sea IE).

Si el usuario hace clic en “No” para cerrar el navegador, se le pedirá al usuario un nombre de usuario / contraseña si intenta acceder a una página en el sitio que requiere autenticación.

 try { document.execCommand("ClearAuthenticationCache"); } catch (e) { } window.close(); 

Este código fue tomado de la página Signout.aspx de SharePoint.

La autenticación de Windows funciona en el nivel de IIS al pasar su token de autenticación de Windows. Debido a que la autenticación ocurre en el nivel de IIS, no puede desconectarse del código de la aplicación. Sin embargo, parece que hay una respuesta a su problema aquí . Es la segunda pregunta abordada y, esencialmente, implica el uso de la Autenticación de formularios y la API de LogonUser de Windows.

Tenía una aplicación de SharePoint con autenticación de Windows, necesitaba el cierre de sesión automático después de 15 minutos. Mezclé algunos códigos y aquí está el resultado. funciona en IE correctamente.

  

ponga estos códigos en su página maestra, después de 15 minutos de inactividad, verá la página de inicio de sesión. Espero que esto ayude a alguien

Tengo esto funcionando usando JavaScript en IE y Firefox, aunque te desconecta de todo lo que iniciaste en IE. Funciona de alguna manera en Safari, pero Safari lanza una advertencia de phishing. No funciona en Opera

     tratar { 
         if (document.all) 
         { 
             document.execCommand ("ClearAuthenticationCache"); 
             window.location = "/"; 
         } 
         más 
         { 
             window.location = "http: // logout: logout@example.com"; 
         } 
     } 
     atrapar (e) 
     { 
         alerta ("No fue posible borrar sus credenciales del caché del navegador. Cierre la ventana de su navegador para asegurarse de que está completamente desconectado del sistema"); 
         self.close (); 
     } 

Las mejores respuestas que he visto se encuentran en preguntas relacionadas con StackOverFlow:

¿Hay un navegador equivalente a ClearAuthenticationCache de IE?

y

Cerrar sesión un usuario cuando usa autenticación HTTP básica

Básicamente, debe enviar una solicitud AJAX al servidor con credenciales no válidas y que el servidor las acepte.