<-
Apache > HTTP Server > 文件 > 版本 2.4 > 模組

Apache 模組 mod_authn_socache

可用語言:  en  |  fr 

描述管理驗證憑證快取,以減輕後端的負載
狀態基本
模組識別碼authn_socache_module
原始檔mod_authn_socache.c
相容性版本 2.3 和之後

摘要

維護驗證憑證的快取,這樣就不需要針對每個驗證請求進行後端查詢了。

Support Apache!

主題

指令

修正錯誤清單

另請參閱

top

驗證快取

部分使用者使用較高負載的驗證,例如 SQL 資料庫查詢(mod_authn_dbd),回報過對驗證提供者造成難以接受的負載。一個典型的案例是 HTML 頁面包含數百個物件(影像、指令碼、樣式表、媒體等等),而對頁面的請求會產生數百個有效的立即請求,以驗證額外的內容。

mod_authn_socache透過維護驗證憑證快取,提供了此問題的解決方案。

top

用法

認證快取應使用於認證查詢會對伺服器、後端或網路造成顯著負載的情形,由檔案進行認證 (mod_authn_file) 或 dbm (mod_authn_dbm) 不太可能受益,因為它們本身就很快速且輕量(儘管在某些情況下,例如網路掛載檔案,快取可能會值得)。其他提供者,例如基於 SQL 或 LDAP 的認證更可能受益,特別是在觀察到效能問題時。在標準模組中,mod_authnz_ldap 管理其自己的快取,因此通常只有 mod_authn_dbd 會從此快取中受益。

針對提供者進行快取的基本規則為

  1. AuthnCacheProvideFor 指令中包含您要為其快取的提供者。
  2. AuthBasicProviderAuthDigestProvider 指令中列出您要為其快取的提供者之前的 socache

使用 dbm 作為快取引擎來加速 mod_authn_dbd 的簡單使用範例

#AuthnCacheSOCache is optional.  If specified, it is server-wide
AuthnCacheSOCache dbm
<Directory "/usr/www/myhost/private">
    AuthType Basic
    AuthName "Cached Authentication Example"
    AuthBasicProvider socache dbd
    AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"
    AuthnCacheProvideFor dbd
    Require valid-user
    #Optional
    AuthnCacheContext dbd-authn-example
</Directory>
top

自訂模組進行快取

模組開發人員應注意,他們的模組必須使用 mod_authn_socache 才能進行快取。提供了一個單一的選用 API 函式 ap_authn_cache_store,用於快取提供者剛剛查詢或產生的憑證。使用範例可以在 r957072 中取得,其中針對快取啟用了三個驗證提供者。

top

AuthnCacheContext 指令

描述指定一個用於快取金鑰的內容文字列
語法AuthnCacheContext 目錄|伺服器|自訂字串
預設值AuthnCacheContext 目錄
內容目錄
狀態基本
模組mod_authn_socache

此指令指定一個字串,將與提供的使用者名稱(在 Digest 認證情況下還包括 realm)一起使用來建構快取金鑰。這有助於釐清伺服器上負責不同認證區域的相同使用者名稱。

這兩個特殊值是 目錄,它使用請求的目錄內容作為字串,以及 伺服器,它使用虛擬主機名稱。

預設值是 目錄,這也是最保守的設定。這很可能不是最佳設定,因為它(例如)會讓 $app-base$app-base/images$app-base/scripts$app-base/media 各自擁有獨立的快取金鑰。較好的政策是為密碼提供者指定 AuthnCacheContext,例如 htpasswd 檔案或資料庫表格。

脈絡可以在伺服器不同區域之間共用,其中認證資訊會共用。不過,這有成為跨網站或跨應用程式安全漏洞的潛力,因此此指令不允許在 .htaccess 脈絡中使用。

top

AuthnCacheEnable 指令

描述啟用任何地方設定的 Authn 快取
語法AuthnCacheEnable
內容伺服器設定檔
狀態基本
模組mod_authn_socache

此指令通常不必使用,只要在 httpd.conf 中的任何地方啟用驗證快取都會用到它。但是,如果 httpd.conf 中沒有開啟它,它預設不會初始化,因此在 .htaccess 中不可用。此指令可確保初始化它,以便在 .htaccess 中使用。

top

AuthnCacheProvideFor 指令

描述指定要快取哪個認證提供者
語法AuthnCacheProvideFor authn-provider [...]
預設值
內容目錄、.htaccess
覆寫AuthConfig
狀態基本
模組mod_authn_socache

此指令指定要快取的認證提供者。在不在 AuthnCacheProvideFor 指令中列出的提供者找到的認證資料不會快取。

例如,要快取 mod_authn_dbd 或自訂的提供者 myprovider 找到的認證資料,但保留輕量級的提供者(如檔案或 dbm 查詢)找到的認證資料

AuthnCacheProvideFor dbd myprovider
top

AuthnCacheSOCache 指令

描述選擇要使用的共用的快取後端
語法AuthnCacheSOCache 提供者名稱[:提供者引數]
內容伺服器設定檔
狀態基本
模組mod_authn_socache
相容性Apache HTTP Server 2.4.7 和更新版本提供了選用的提供者引數

這是用於選擇 共用物件快取 的提供者的伺服器範圍設定,後面是該提供者的選用引數。可能的 provider-name 值為「dbm」、「dc」、「memcache」或「shmcb」,每個都必須載入適當的模組。如果未設定,將使用平台的預設值。

top

AuthnCacheTimeout 指令

描述設定快取條目的逾時時間
語法AuthnCacheTimeout 逾時(秒)
預設值AuthnCacheTimeout 300(5 分鐘)
內容目錄、.htaccess
覆寫AuthConfig
狀態基本
模組mod_authn_socache

快取驗證資料可能會造成安全問題,不過短期快取不太可能成為問題。通常,良好的解決方案是在解除後端負載所需的時段內快取認證資訊,但不能更久;不過,如果您變更使用者和密碼的頻率很低,可能會採用較長的逾時時間。預設的 300 秒(5 分鐘)既謹慎又足夠,可降低後端負載,例如 dbd(SQL 資料庫查詢)。

請勿將此與會話逾時混淆,會話逾時是完全不同的問題。但是,您可能需要檢查會話管理軟體快取的憑證是否「不小心」延長會話,並在設定逾時時將此納入考量。

可用語言:  en  |  fr 

top

意見

注意事項
此處並非問答區。放置於此的意見應針對改善文件或伺服器提供建議,且如果已實施或被視為無效/離題時,可能會遭到我們的版務移除。有關如何管理 Apache HTTP 伺服器的問題應導向 #httpd IRC 頻道 (位於 Libera.chat) 或寄送至我們的郵件清單