可以將伺服器配置為使用基於 LDAP 或基於檔案的目錄服務執行摘要認證。
摘要認證允許使用者根據使用者名稱和密碼進行認證,而無須傳送明文格式的使用者名稱和密碼。瀏覽器以使用者的密碼和 Web 伺服器提供的某些資訊,利用 MD5 演算法來建立摘要值。
當伺服器使用基於 LDAP 的目錄服務執行摘要認證時,也將使用摘要認證外掛程式在伺服器端計算該摘要值,並與用戶端提供的摘要值比較。如果摘要值相符,則使用者將通過認證。為了使此機制得以運作,您的目錄伺服器需要存取明文格式的使用者密碼。Sun Java System Directory Server 具有一個可逆的密碼外掛程式,它使用對稱的加密演算法以加密形式儲存資料,這些資料可在稍後被解密成原來的形式。只有目錄伺服器保留了資料的金鑰。
對於基於 LDAP 的摘要認證,您需要啟用伺服器中包含的可逆密碼外掛程式及 digestauth 專用外掛程式。若要配置 Web 伺服器以處理摘要認證,請設定 dbswitch.conf 中資料庫定義的 digestauth 特性。
如果未指定 ACL 方法,則需要認證時,伺服器將使用摘要認證或基本認證;不需要認證時,伺服器將使用基本認證。此為首選方法。
表 7–1 摘要認證的不同情況|
ACL 方法 |
認證資料庫支援摘要認證 |
認證資料庫不支援摘要認證 |
|---|---|---|
|
「預設」 未指定 |
摘要和基本 |
基本 |
|
「基本」 |
基本 |
基本 |
|
「摘要」 |
摘要 |
錯誤 |
當處理具有 method = digest 的 ACL 時,伺服器嘗試透過下列方式進行驗證:
檢查 Authorization 請求標頭。如果沒有找到該標頭,將會產生帶有摘要詰問的 401 回應,且程序也隨之停止。
檢查授權類型。如果認證類型為摘要,伺服器將:
檢查 nonce。如果不是由此伺服器產生的有效的新 nonce,將會產生 401 回應,且程序會隨之停止。 如果已過期,則會產生 401 回應 (其中 stale=true),且程序會隨之停止。
您可以變更位於 server_root /https-server_name/config/ 的 magnus.conf 檔案中 DigestStaleTimeout 參數的值,來配置 nonce 的有效時間。若要設定該值,請將以下行增加至 magnus.conf:
其中 seconds 表示 nonce 保持最新的秒數。指定的秒數過後,nonce 將過期並需要使用者進行新的認證。
檢查範圍。如果不符合,將產生 401 回應,且程序會隨之停止。
如果認證目錄是基於 LDAP 的,請檢查 LDAP 目錄中是否存在使用者;如果認證目錄是基於檔案的,請檢查檔案資料庫中是否存在使用者。 如果沒有找到使用者,將產生 401 回應,且程序會隨之停止。
從目錄伺服器或檔案資料庫取得請求/摘要值,並檢查是否符合用戶端的請求/摘要。 如果不符合,將產生 401 回應,且程序會隨之停止。
建構 Authorization-Info 標頭並將其插入伺服器標頭中。