2010-01-15 10 views
9

Ho un sito Web che vorrei consentire sia per Forms che per Windows. Il mio problema è che sembra che quando si configura IIS per consentire sia l'autenticazione anonima (Richiesto per i moduli), sia l'autenticazione di Windows che il browser non invierà le credenziali di rete dell'utente.Autenticazione Windows IIS prima di Anonymous

Utilizza solo l'accesso anonimo. C'è un modo in IE8 o IIS per provare Windows Auth 1st e poi tornare a Anonymous?

Grazie per qualsiasi aiuto.

+0

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

risposta

11

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.

+0

Hm, mi dispiace per il downvote, non so perché, ma non posso annullare apparentemente .. – Onkelborg

Problemi correlati