Domanda

C'è un modo per fornire una funzione di logout per un sito che utilizza ASP classico, e che utilizza l'autenticazione di Windows (ad esempio le cartelle con restrizioni hanno le autorizzazioni impostato tramite il sistema operativo del server, e nomi utente / password vengono memorizzate in Active Directory)?

Se non fa alcuna differenza, il server è in esecuzione IIS 5.0. La disconnessione ha bisogno di lavorare per IE (6, 7, e 8) e Firefox per lo meno.

Si noti che questo è un vecchio e abbastanza grande sito - molte centinaia di pagine ASP singoli - in modo che qualsiasi soluzione che comporterebbe la modifica singole pagine semplicemente non funzionerà. (Per la stessa ragione, così come buona educazione di base, si prega di non suggerire cambiando a asp.net.)

Quello che ho trovato finora suggerisce che l'invio di un codice di 401 risposta potrebbe causare alcuni browser per cancellare l'autenticazione, ma (1) Io non so come fare, e (2 ) mi piacerebbe davvero preferisco qualcosa che funziona davvero, e non solo ha una remota possibilità di lavorare. So anche che giocherellare con l'oggetto Session (.Abandon, per esempio) sarebbe del tutto inutile perché questo è non dove l'autenticazione è fatto.

È stato utile?

Soluzione

L'utilizzo del termine "Logout" è fonte di confusione. Di solito i suoi siti reposibility per gestire login / out e questo è in genere fatto utilizzando l'oggetto sessione, ma questo non è quello che si sta parlando.

percepisco due cose possibili si può parlare di.

Connessione di autenticazione

In primo luogo il fatto che l'autenticazione del tipo fatto da protezione integrata di Windows viene effettuata a livello di connessione. Una volta che la connessione è stata autenticata connessione (che in HTTP / 1.1 è predefinita mantenuto in uno stato aperto) può essere utilizzato senza ulteriore necessità di autenticazioni strette di mano.

Può essere possibile convincere il client o server per chiudere la connessione includendo l'intestazione Connection: close nella risposta, ma questo non può effettivamente comportare la connessione chiusa.

Inoltre, un cliente può avere 2 o più autenticati connessioni aperte alla volta. Questo caso l'approccio di cui sopra sarebbe solo chiudere uno di loro.

La conclusione è che c'è poco che si può fare su connessioni autenticate a un livello per ogni sessione.

Credential caching

IE memorizza nella cache le credenziali di un utente inserisce per un accesso alla rete a un sito specifico per l'intera durata della sessione di IE. Quindi, anche se non è riuscito a chiudere le connessioni autenticate esistenti IE semplicemente ri-utilizzare le credenziali memorizzate nella cache per completare ogni successiva stretta di mano di autenticazione in silenzio. Potrebbe essere possibile configurare il client di non farlo, ma dubito che sia qualcosa che si può utilizzare.

Conclusione

La risposta a (almeno la domanda che mi percepisco ti stai chiedendo) è: no, non è possibile

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top