Non è possibile chiedere l'autenticazione HTTP (che sia l'autenticazione di base o l'autenticazione integrata di Windows) senza che la finestra di dialogo di autenticazione compaia nel caso in cui non vi siano ancora credenziali.
Quindi, in generale per gli approcci ibridi HTTP-auth + cookie-auth, si abilita l'accesso anonimo e autenticato per la maggior parte del sito, ma si consente solo l'accesso autenticato a uno specifico script.
Quando l'utente accede a una pagina senza alcun tipo di autorizzazione, si sputa una pagina con un modulo di accesso per l'autenticazione basata su cookie e anche un collegamento all'unico URL che consente solo l'accesso autenticato. L'utente può compilare il modulo per i cookie &, oppure premere il link per accedere con l'autenticazione HTTP.
Se l'utente segue tale collegamento, riceverà una risposta 401
e dovrà fornire l'autenticazione HTTP, tramite la finestra di dialogo di autenticazione o potenzialmente utilizzando automaticamente l'autenticazione integrata di Windows. Una volta che questo è successo una volta, il browser inizierà ad inviare le stesse credenziali ad ogni pagina futura, quindi IIS decodificherà le credenziali per darti il REMOTE_USER
previsto quando vengono eseguiti gli script del tuo sito principale.
I browser invieranno solo le credenziali alle pagine nella stessa directory dello script 401
o sottodirectory di questo. Per questo motivo è meglio inserire lo script richiesto da HTTP-auth nella root, ad esempio come /login.aspx
.
Tuttavia, vi sono alcuni browser che non invieranno automaticamente le credenziali per ulteriori pagine e richiedono che ogni richiesta HTTP risponda prima a 401
prima di inviare nuovamente la richiesta con le credenziali. Ciò rende impossibili gli schemi auth-auth e auth-auth (oltre a rendere la navigazione dei siti protetti molto più lenta!). L'unico browser moderno che fa questo è Safari. Potrebbe non interessarti, dato che il supporto di Safari per l'autenticazione integrata di Windows è sempre stato traballante, e può ancora utilizzare i tipi di modulo + cookie auth.
possibile duplicato di [Come supportare l'autenticazione NTLM con fallback per form in ASP.NET MVC?] (Http://stackoverflow.com/questions/4027911/how-to-support-ntlm-authentication-with- fall-back-to-form-in-asp-net-mvc) – Neil