IIS 是否同時支持 HTTP 基本身份驗證和表單身份驗證?
前言:我是一個非常了解 apache 伺服器的 Web 開發人員,但我對 IIS 或 .NET 知之甚少
我與一位開發人員合作,他一直在避免向執行 IIS 的登台伺服器添加基本身份驗證的請求一段時間。今天他終於加了,但是加了消息
IIS 不允許您同時使用基本身份驗證和表單身份驗證。
我通過安裝第 3 方程序解決了這個問題,該程序允許您在 iis 模組前面使用 .htaccess / apache 模組。
根據要求,它會佔用更多資源,但對於分期來說,它並不是很重要。
我的問題是(因為這個解釋與我所知道的關於 Web 應用程序和職責分離的一切背道而馳)IIS 怎麼可能阻止在為其使用者使用自定義表單身份驗證的站點上使用基本身份驗證?
基本身份驗證是一個術語,通常指的是 HTTP 協議中的身份驗證。
基於表單的身份驗證在基於 Web 的應用程序的上下文中處理。這通常涉及一個表單,該表單使用 cookie 設置某種會話標識符,然後當表單被處理時,有關使用者狀態的資訊與伺服器端的該會話相關聯。
基本上通過會話 cookie 跟踪的基於表單的身份驗證與實際上直接位於 HTTP 標頭中的基於 HTTP 的身份驗證之間實際上沒有任何直接關係。
IIS 怎麼可能阻止在為其使用者使用自定義表單身份驗證的站點上使用基本身份驗證?
它與 IIS 阻止基本身份驗證無關,它與兩者不兼容有關。如果您使用表單進行初始身份驗證,則關聯的登錄狀態將儲存在會話中。但是處理基本身份驗證的軟體通常對 cookie 或會話一無所知,它所知道的只是 HTTP 身份驗證。當您讓 IIS 執行身份驗證主乾時,身份驗證發生在您的應用程序被觸及之前。
如果您使用 IIS 的內置功能進行基本身份驗證,那麼您基本上只能使用它。
但是,通過讓您的應用程序發送和解析正確的 HTTP 標頭,應該可以在您的應用程序中實現 HTTP 身份驗證。為此,您將 IIS 設置為基於表單的身份驗證,然後您只需在應用程序中執行所有操作。這樣,您的應用程序應該可以根據會話狀態發送正確的標頭。