Logout di autenticazione di Windows ASP.NET

Come si disconnette quando si utilizza l’autenticazione di Windows in ASP.NET come questo web.config?

 

Ho già provato il seguente senza successo. Reindirizza, ma non disconnette l’utente.

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

Informazioni di base:

Devo usare l’autenticazione di Windows perché ho bisogno di impersonare l’id quadro usando Active Directory per ottenere l’accesso ai file locali. E non posso impersonare l’utilizzo dell’autenticazione HttpContext.Current.User.Identity su form perché HttpContext.Current.User.Identity non sarà WindowsIdentity . Impersonare utilizzando l’autenticazione basata su moduli

Nessun pulsante di logout sul lato server funzionerà quando si utilizza l’autenticazione “Windows”. È necessario utilizzare l’autenticazione “Moduli” se si desidera un pulsante di disconnessione o chiudere il browser dell’utente.

Solo per i browser IE , è ansible utilizzare il seguente javascript per disconnettere l’utente se si utilizza l’autenticazione di Windows. (Nota: la chiusura del browser non è richiesta, ma consigliata poiché l’utente potrebbe utilizzare un browser non IE).

Se l’utente fa clic su “No” per chiudere il browser, all’utente verrà richiesto un nome utente / password se tentano di accedere a una pagina del sito che richiede l’autenticazione.

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

Questo codice è stato preso dalla pagina Signout.aspx di SharePoint.

L’autenticazione di Windows funziona a livello IIS passando il token di autenticazione di Windows. Poiché l’autenticazione si verifica a livello di IIS, non è ansible disconnettersi dal codice dell’applicazione. Tuttavia, sembra che ci sia una risposta al tuo problema qui . È la seconda domanda indirizzata e riguarda essenzialmente l’utilizzo dell’autenticazione basata su form e l’API di Windows LogonUser.

Avevo un’applicazione SharePoint con autenticazione di Windows, avevo bisogno di un logout automatico dopo 15 minuti. Ho mescolato alcuni codici ed ecco il risultato. funziona correttamente in IE.

  

inserisci questi codici nella tua pagina principale, dopo 15 minuti di inattività vedrai la pagina di accesso. Spero che questo aiuti qualcuno

Ho questo lavoro utilizzando JavaScript sia in IE e Firefox, anche se ti disconnette da tutto ciò che hai effettuato l’accesso in IE. Funziona in Safari, ma Safari lancia un avvertimento di phishing. Non funziona in Opera.

     provare { 
         se (document.all) 
         { 
             Document.ExecCommand ( "ClearAuthenticationCache"); 
             window.location = "/"; 
         } 
         altro 
         { 
             window.location = "http: // logout: logout@example.com"; 
         } 
     } 
     catch (e) 
     { 
         avviso ("Non è stato ansible cancellare le credenziali dalla cache del browser. Chiudi la finestra del browser per assicurarti di essere completamente disconnesso dal sistema."); 
         self.close (); 
     } 

Le migliori risposte che ho visto si trovano nelle domande relative a StackOverFlow:

Esiste un browser equivalente a ClearAuthenticationCache di IE?

e

Registrazione di un utente quando si utilizza l’autenticazione di base HTTP

Fondamentalmente è necessario inviare una richiesta AJAX al server con credenziali non valide e fare in modo che il server le accetti.