<-
Apache > HTTP 伺服器 > 文件 > 版本 2.4 > 模組

Apache 模組 mod_authnz_ldap

提供語言:  en  |  fr 

說明允許使用 LDAP 目錄儲存 HTTP Basic 驗證資料庫。
狀態擴充
模組識別authnz_ldap_module
原始檔mod_authnz_ldap.c
相容性於版本 2.1 或更新版本中提供

摘要

此模組允許驗證前端(例如 mod_auth_basic)透過 ldap 目錄驗證使用者。

mod_authnz_ldap 支援下列功能

使用 mod_auth_basic 時,此模組會透過 AuthBasicProvider 指令中具有 ldap 值來呼叫。

Support Apache!

主題

指令

除錯清單

另見

top

目錄

top

一般注意事項

此模組會依據 mod_ldap 的設定快取驗證和授權結果。對後端 LDAP 伺服器所做的變更,將不會立即反映在 HTTP 伺服器上,包括但不限於使用者鎖定/取消、變更密碼或變更群組成員資格。請參閱 mod_ldap 中的指令,取得快取可調整項目詳細資料。

top

操作

授與使用者存取權時,共有兩個階段。第一階段是驗證,在此階段中 mod_authnz_ldap 驗證提供者會驗證使用者的憑證是否有效。這也被稱為搜尋/繫結階段。第二階段是授權,在此階段中 mod_authnz_ldap 會判斷經過驗證的使用者是否允許存取有爭議的資源。這也稱為比較階段。

mod_authnz_ldap 註冊一個 authn_ldap 身份驗證提供者與一個 authz_ldap 授權處理器。authn_ldap 驗證提供者可以使用 AuthBasicProvider 指令使用 ldap 值啟用。authz_ldap 處理器會透過增加 ldap-userldap-dnldap-group 值擴充 Require 指令的授權類型。

驗證階段

在驗證階段期間,mod_authnz_ldap 會搜尋目錄中的條目,以比對 HTTP 用戶端所傳遞的使用者名稱。如果找到單一的唯一比對,則 mod_authnz_ldap 會嘗試使用該條目的 DN 與 HTTP 用戶端所提供的密碼連結到目錄伺服器。由於它會執行搜尋,然後再進行連結,因此常被稱為搜尋/連結階段。
以下是搜尋/連結階段期間執行的步驟。

  1. 結合 AuthLDAPURL 指令中所提供的屬性和過濾條件,並配上 HTTP 用戶端所傳遞的使用者名稱,以產生搜尋過濾條件。
  2. 使用所產生的過濾條件搜尋目錄。如果搜尋結果不是剛好只有一個條目,則拒絕或取消存取。
  3. 取得經由搜尋所擷取條目的已驗別名稱,並嘗試使用該 DN 與 HTTP 用戶端所傳遞的密碼連結到 LDAP 伺服器。如果連結失敗,則拒絕或取消存取。

在搜尋/連結階段期間會使用下列指令

AuthLDAPURL 指定 LDAP 伺服器、基本 DN、要在搜尋中使用的屬性,以及要使用的額外搜尋過濾條件。
AuthLDAPBindDN 在搜尋階段用來連結的 DN(選用)。
AuthLDAPBindPassword 在搜尋階段用來連結的密碼(選用)。

授權階段

在授權階段期間,mod_authnz_ldap 會嘗試判斷使用者是否獲准存取資源。這些檢查中有很多需要 mod_authnz_ldap 對 LDAP 伺服器執行比較操作。這也就是為何此階段常被稱為比較階段。mod_authnz_ldap 會接受下列 Require 指令,以判斷憑據是否可接受

其他 Require 值也可以使用,這可能需要載入額外的授權模組。

mod_authnz_ldap 在比較階段會使用下列指令

AuthLDAPURL Require ldap-user 操作的比較操作中,會使用在 URL 中指定的屬性。
AuthLDAPCompareDNOnServer 決定 Require ldap-dn 指令的行為。
AuthLDAPGroupAttribute 決定在 Require ldap-group 指令中要使用的比較屬性。
AuthLDAPGroupAttributeIsDN 在針對 Require ldap-group 指令進行比較時,指定是否使用使用者 DN 或使用者名稱。
AuthLDAPMaxSubGroupDepth 決定在 Require ldap-group 指令中進行比較時,要評估的子群組的最大深度。
AuthLDAPSubGroupAttribute 決定在 Require ldap-group 指令中進行比較時,取得目前的群組之的子群組成員時要使用的屬性。
AuthLDAPSubGroupClass Require ldap-group 指令的子群組處理過程中,指定用來識別查詢的目錄物件是否確實為群組物件(相對於使用者物件)的 LDAP objectClass 值。
top

Require 指令

Apache 的 Require 指令在授權階段使用,以確保使用者被允許存取資源。mod_authnz_ldap 使用 ldap-userldap-dnldap-groupldap-attributeldap-filter 延伸授權類型。其他授權類型也可以使用,但可能需要載入額外的授權模組。

自 2.4.8 版起,LDAP 需要指令中會支援 表達式

Require ldap-user

Require ldap-user 指令指定哪些使用者名稱可以存取資源。一旦 mod_authnz_ldap 從目錄中擷取到唯一的 DN,它就會使用 Require ldap-user 中指定使用者名稱,執行 LDAP 比對作業,以查看該使用者名稱是否屬於剛剛擷取的 LDAP 條目的一部分。透過在行中輸入多個使用者名稱(以空格分隔)的方式,可以授權給多個使用者。如果使用者名稱中有空格,則必須加上雙引號。也可以透過使用多個 Require ldap-user 指令(每行一個使用者)的方式,授權給多個使用者。例如,ldap://ldap/o=範例?cn(也就是說 cn 用於搜尋),以下的 Require 指令可用於限制存取權

Require ldap-user "Barbara Jenson"
Require ldap-user "Fred User"
Require ldap-user "Joe Manager"

由於 mod_authnz_ldap 處理此指令的方式,Barbara Jenson 可用身分登入為 Barbara JensonBabs Jenson 或 LDAP 條目中的任何其他 cn。只有一個 Require ldap-user 行即可支援使用者條目中該屬性的所有值。

如果在上述網址中使用 uid 屬性而非 cn 屬性,上述三行可濃縮成

Require ldap-user bjenson fuser jmanager

Require ldap-group

此指令指定一個 LDAP 群組,其成員有權存取。它會採用 LDAP 群組的識別名稱。注意:不要加上引號將群組名稱括號起來。例如,假設 LDAP 目錄中有下列條目

dn: cn=Administrators, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Barbara Jenson, o=Example
uniqueMember: cn=Fred User, o=Example

下列指令會授權 Fred 及 Barbara

Require ldap-group cn=Administrators, o=Example

如果將 AuthLDAPMaxSubGroupDepth 設定為大於 0 的值,也可以在指定 LDAP 群組的次群組中找到成員。例如,假設 LDAP 目錄中有下列條目

dn: cn=Employees, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Managers, o=Example
uniqueMember: cn=Administrators, o=Example
uniqueMember: cn=Users, o=Example

dn: cn=Managers, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Bob Ellis, o=Example
uniqueMember: cn=Tom Jackson, o=Example

dn: cn=Administrators, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Barbara Jenson, o=Example
uniqueMember: cn=Fred User, o=Example

dn: cn=Users, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Allan Jefferson, o=Example
uniqueMember: cn=Paul Tilley, o=Example
uniqueMember: cn=Temporary Employees, o=Example

dn: cn=Temporary Employees, o=Example
objectClass: groupOfUniqueNames
uniqueMember: cn=Jim Swenson, o=Example
uniqueMember: cn=Elliot Rhodes, o=Example

下列指令會允許 Bob Ellis、Tom Jackson、Barbara Jenson、Fred User、Allan Jefferson 和 Paul Tilley 存取,但會拒絕 Jim Swenson 或 Elliot Rhodes(因為他們位於次群組深度 2)的存取權

Require ldap-group cn=Employees, o=Example
AuthLDAPMaxSubGroupDepth 1

此指令的行為會受到 AuthLDAPGroupAttributeAuthLDAPGroupAttributeIsDNAuthLDAPMaxSubGroupDepthAuthLDAPSubGroupAttributeAuthLDAPSubGroupClass 指令的修改。

Require ldap-dn

Require ldap-dn 指令容許管理員根據識別名稱授與存取權。它指定必須比對才能授與存取權的 DN。如果從目錄伺服器擷取到的識別名稱與 Require ldap-dn 中的識別名稱相符,則授與授權。注意:不要加上引號將識別名稱括號起來。

下列指令會授與特定的 DN 存取權

Require ldap-dn cn=Barbara Jenson, o=Example

AuthLDAPCompareDNOnServer 指令修改此指令的行為。

Require ldap-attribute

Require ldap-attribute 指令允許管理員根據已驗證使用者在 LDAP 目錄中的屬性授予存取權。如果目錄中的屬性與設定中的值相符,則會授予存取權。

下列指令會授予所有具有屬性 employeeType = active 的人存取權

Require ldap-attribute employeeType="active"

可在同一行中以空格分隔指定多個屬性/值對,或可在多個 Require ldap-attribute 指令中指定。列出多個屬性/值對的效果為 OR 運算。如果任一列出的屬性值與使用者物件中對應屬性的值相符,則會授予存取權。如果屬性的值包含空格,則必須只將值置於雙引號內。

下列指令會授予城市屬性等於「San Jose」或狀態屬性等於「Active」的所有人存取權

Require ldap-attribute city="San Jose" status="active"

Require ldap-filter

Require ldap-filter 指令允許管理員根據複雜的 LDAP 搜尋篩選條件授予存取權。如果篩選條件搜尋傳回的 distinguished name 與已驗證使用者的 distinguished name 相符,則會授予存取權。

下列指令會授予所有有手機且在行銷部門的人員存取權

Require ldap-filter "&(cell=*)(department=marketing)"

Require ldap-filter 指令與 Require ldap-attribute 指令的差異在於,ldap-filter 會使用指定的搜尋篩選條件對 LDAP 目錄執行搜尋作業,而非執行簡單的屬性比較。如果只需要進行簡單的屬性比較,則由 ldap-attribute 執行的比較作業會比由 ldap-filter 使用的搜尋作業更快,尤其是在大型目錄中。

在篩選條件中使用 表達式 時,必須小心,確保以正確方式跳脫 LDAP 篩選條件,以防止 LDAP 注入。ldap 函數可用於此目的。

<LocationMatch ^/dav/(?<SITENAME>[^/]+)/>
  Require ldap-filter (memberOf=cn=%{ldap:%{unescape:%{env:MATCH_SITENAME}},ou=Websites,o=Example)
</LocationMatch>
top

範例

top

使用 TLS

如要使用 TLS,請參閱 mod_ldap 指令 LDAPTrustedClientCertLDAPTrustedGlobalCertLDAPTrustedMode

可以將一個選擇性第二個參數新增到 AuthLDAPURL,以覆寫由 LDAPTrustedMode 設定的預設連線類型。這將允許由 ldap:// Url 建立的連線在同一個埠升級為安全的連線。

top

使用 SSL

如要使用 SSL,請參閱 mod_ldap 指令 LDAPTrustedClientCertLDAPTrustedGlobalCertLDAPTrustedMode

如要指定安全的 LDAP 伺服器,請在 AuthLDAPURL 指令中使用 ldaps:// ,而不是 ldap://

top

公開登入資訊

當這個模組執行 驗證 時,指定在 AuthLDAPURL 指令的前綴為 "AUTHENTICATE_" 的 LDAP 屬性都會被放入環境變數中。

當這個模組執行 授權 時,指定在 AuthLDAPURL 指令的前綴為 "AUTHORIZE_" 的 LDAP 屬性都會被放入環境變數中。

如果屬性欄位包含使用者的使用者名稱、一般名稱和電話號碼,CGI 程式就能夠存取這些資訊,而無須提出第二次的獨立 LDAP 查詢來收集這些其他資訊。

這樣有可能大幅地簡化在某些 Web 應用程式中所要求的編碼與組態。

top

使用 Active Directory

Active Directory 安裝可能同時支援多個網域。若要分辨網域間的使用者,會將稱為使用者主體名稱 (UPN) 的識別碼加入至目錄中使用者的項目。此 UPN 通常會採用使用者的帳戶名稱格式,後接特定網域的網域組件,例如 somebody@nz.example.com

您可能想設定 mod_authnz_ldap 模組,以驗證存在於組成 Active Directory 林的任何網域中的使用者。透過這種方式,somebody@nz.example.comsomeone@au.example.com 可以在同時使用同一查詢進行驗證。

為了讓這項實務可行,Active Directory 支援全球目錄的概念。此全球目錄是 Active Directory 林內所有 Active Directory 伺服器中選取的屬性的唯讀副本。查詢全球目錄,只要一個查詢便可讓所有網域進行查詢,而不用跨越伺服器而且網速很慢。

如果啟用,全球目錄是獨立的目錄伺服器,使用第 3268 號埠 (SSL 為第 3269 號埠) 來執行。若要搜尋使用者,針對屬性 userPrincipalName 進行子樹搜尋,其搜尋根目錄為空白,如下所示

AuthLDAPBindDN apache@example.com
AuthLDAPBindPassword password
AuthLDAPURL ldap://10.0.0.1:3268/?userPrincipalName?sub

使用者需要以 somebody@nz.example.com 格式輸入其使用者主體名稱作為登入名稱。

top

在 mod_authnz_ldap 中使用 Microsoft FrontPage

通常,FrontPage 使用 FrontPage 網頁專用的使用者/群組檔案(亦即 mod_authn_filemod_authz_groupfile 模組)來處理所有驗證。遺憾的是,無法僅透過新增適當的指令就變更為 LDAP 驗證,因為這將會損毀 FrontPage 應用程式中會嘗試修改標準文字授權檔的 權限 表單。

一旦建立了 FrontPage 網頁,對其新增 LDAP 驗證的方式是將下列指令加入在網頁中建立的每個 .htaccess 檔案中

AuthLDAPURL       "the url"
AuthGroupFile     "mygroupfile"
Require group     "mygroupfile"

運作方式

FrontPage 透過將 Require valid-user 指令加入到 .htaccess 檔案來限制對網頁的存取。Require valid-user 指令會對根據 LDAP 的觀點任何有效的使用者成功執行。這表示,在 LDAP 目錄中擁有項目的任何人都會被視為有效使用者,而 FrontPage 僅將本機使用者檔案中的人視為有效。Apache 會以 ldap-group 搭配群組檔案授權取代,因此在處理使用者的授權時,Apache 會查詢本機使用者檔案(由 FrontPage 管理),而非 LDAP。

在如上所述加入指令後,FrontPage 使用者便能透過 FrontPage 應用程式執行所有管理操作。

注意事項

top

AuthLDAPAuthorizePrefix 指令

說明指定身分驗證期間設定環境變數的前置字元
語法AuthLDAPAuthorizePrefix prefix
預設值AuthLDAPAuthorizePrefix AUTHORIZE_
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性2.3.6 等更新版本可用

此指令讓您能覆寫 LDAP 身分驗證期間設定環境變數所使用的前置字元,如果指定 AUTHENTICATE_,這些環境變數的消費者將看見相同資訊,無論 LDAP 是執行身分驗證、授權,還是同時執行。

注意

根據 Require valid-user 所授權的使用者,不會設定任何授權變數。
top

AuthLDAPBindAuthoritative 指令

說明確定當使用者可以映射到 DN 而伺服器無法使用使用者的憑證進行綁定時,是否會使用其他驗證提供者。
語法AuthLDAPBindAuthoritative off|on
預設值AuthLDAPBindAuthoritative on
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

在預設情況下,只有當使用者無法映射到 DN 時,才會查詢後續的驗證提供者,而不是當使用者可以映射到 DN,而他們的密碼無法使用 LDAP 綁定進行驗證時。如果將 AuthLDAPBindAuthoritative 設定為 off,則如果 LDAP 綁定(使用目前使用者的憑證)因任何原因失敗,已設定的其他驗證模組將有機會驗證使用者。

這樣可以讓同時存在於 LDAP 和 AuthUserFile 中的使用者,在 LDAP 伺服器可用時,但使用者的帳戶已鎖定或密碼無法使用時進行驗證。

另見

top

AuthLDAPBindDN 指令

說明用於繫結到 LDAP 伺服器的選用 DN
語法AuthLDAPBindDN 識別名稱
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

在搜尋項目時用來繫結到伺服器的選用 DN。若未提供,mod_authnz_ldap 會使用匿名繫結。

top

AuthLDAPBindPassword 指令

說明與繫結 DN 搭配使用的密碼
語法AuthLDAPBindPassword 密碼
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性exec: 已在 2.4.5 中加入。

與繫結 DN 搭配使用的繫結密碼。注意,繫結密碼可能是敏感資料,應適當保護。您應僅在絕對需要搜尋目錄時,才使用 AuthLDAPBindDNAuthLDAPBindPassword

如果值以 exec: 開頭,將會執行最終指令,並將程式傳回至標準輸出的第一行做為密碼使用。

#Password used as-is
AuthLDAPBindPassword secret

#Run /path/to/program to get my password
AuthLDAPBindPassword exec:/path/to/program

#Run /path/to/otherProgram and provide arguments
AuthLDAPBindPassword "exec:/path/to/otherProgram argument1"
top

AuthLDAPCharsetConfig 指令

說明語言至字元集轉換組態檔案
語法AuthLDAPCharsetConfig 路徑
內容伺服器組態
狀態擴充
模組mod_authnz_ldap

AuthLDAPCharsetConfig 指令設定語言至字元集轉換組態檔案的位置。檔案路徑 是相對應於 ServerRoot 的。這個檔案會指定語言副檔名至字元集的清單。大多數的管理員都會使用提供的 charset.conv 檔案,它會將常見的語言副檔名關聯到字元集。

檔案包含以下格式的行

語言副檔名 字元集 [語言字串] ...

副檔名的字元大小寫無所謂。空白行與以雜湊字元 (#) 開頭的行會被忽略。

top

AuthLDAPCompareAsUser 指令

說明使用已驗證使用者的憑證進行授權比對
語法AuthLDAPCompareAsUser 開|關
預設值AuthLDAPCompareAsUser 關
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性2.3.6 等更新版本可用

如果已設定,且 mod_authnz_ldap 已認證使用者,授權的 LDAP 比較將採用驗證使用者的查詢識別名稱 (DN) 和 HTTP 基本認證密碼,而不是伺服器的已設定憑證。

ldap-attributeldap-userldap-group (僅限單一層級) 授權檢查使用比較。

這項指令僅對 AuthLDAPSearchAsUser 也已啟用時,於巢狀群組處理期間執行的比較有效。

這項指令僅應於 LDAP 伺服器不接受匿名比較時使用,且您無法使用專門的 AuthLDAPBindDN

另見

top

AuthLDAPCompareDNOnServer 指令

說明使用 LDAP 伺服器比較 DN
語法AuthLDAPCompareDNOnServer 開|關
預設值AuthLDAPCompareDNOnServer 開
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

如果已設定,mod_authnz_ldap 將使用 LDAP 伺服器比較 DN。這是比較 DN 的唯一萬無一失方法。 mod_authnz_ldap 將於目錄中搜尋 Require dn 指令指定的 DN,然後擷取 DN 並與從使用者條目中擷取的 DN 比較。如果未設定這項指令,mod_authnz_ldap 僅會執行字串比較。使用此方法可能會導致誤判,但速度快很多。請注意,mod_ldap 快取可以在大多數情況下加快 DN 比較速度。

top

AuthLDAPDereferenceAliases 指令

說明模組將於何時取消對別名的參照
語法AuthLDAPDereferenceAliases 永不|搜尋中|尋找中|始終
預設值AuthLDAPDereferenceAliases 始終
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

這項指令指定 mod_authnz_ldap 於 LDAP 作業中取消對別名的參照的時間。預設值為 始終

top

AuthLDAPGroupAttribute 指令

說明用於辨識群組使用者成員的 LDAP 屬性。
語法AuthLDAPGroupAttribute 屬性
預設值AuthLDAPGroupAttribute member uniqueMember
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

這項指令指定用於檢查群組內使用者成員的 LDAP 屬性。可以重複指定這項指令來使用多個屬性。如果未指定,mod_authnz_ldap 將使用 memberuniqueMember 屬性。

top

AuthLDAPGroupAttributeIsDN 指令

說明於檢查群組成員資格時使用用戶端使用者名稱的 DN
語法AuthLDAPGroupAttributeIsDN 開|關
預設值AuthLDAPGroupAttributeIsDN 開
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

當設定為 on 時,此指令說明在檢查群組成員身份時,要使用用戶端使用者名稱的特殊名稱。否則,將使用使用者名稱。例如,假設用戶端傳送使用者名稱 bjenson,這對應到 LDAP DN cn=Babs Jenson, o=Example。如果設定此指令,mod_authnz_ldap 將檢查群組是否有 cn=Babs Jenson, o=Example 為成員。如果未設定此指令,mod_authnz_ldap 將檢查群組是否有 bjenson 為成員。

top

AuthLDAPInitialBindAsUser 指令

說明決定伺服器是否使用基本驗證使用者自己的使用者名稱來進行初始 DN 查詢,而不是匿名或使用伺服器的硬式編碼憑證
語法AuthLDAPInitialBindAsUser off|on
預設值AuthLDAPInitialBindAsUser off
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性2.3.6 等更新版本可用

預設情況下,伺服器匿名或使用特定使用者和密碼,將基本驗證使用者名稱轉換為 LDAP 特殊名稱 (DN)。此指令強制伺服器使用傳入使用者提供的逐字使用者名稱和密碼執行初始 DN 搜尋。

如果逐字使用者名稱無法直接繫結,但需要一些美觀的轉換,請參閱 AuthLDAPInitialBindPattern

僅在 LDAP 伺服器不接受匿名搜尋且無法使用專用 AuthLDAPBindDN 時,才應使用此指令。

授權專用時不可用

如果此模組驗證使用者,則只能使用此指令,且在僅將此模組用於授權時無效。

另見

top

AuthLDAPInitialBindPattern 指令

說明指定在繫結到 LDAP 伺服器以執行 DN 查詢時,要轉換的基本驗證使用者名稱
語法AuthLDAPInitialBindPattern regex substitution
預設值AuthLDAPInitialBindPattern (.*) $1(照字面使用遠端使用者名稱)
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性2.3.6 等更新版本可用

如果 AuthLDAPInitialBindAsUser 設定為 ON,基本驗證使用者名稱將根據正規表示式和替換引數進行轉換。

正規表示式引數與目前的驗證使用者名稱進行比較。替換引數可能包含反向參考,但沒有其他變數內插。

僅在 LDAP 伺服器不接受匿名搜尋且無法使用專用 AuthLDAPBindDN 時,才應使用此指令。

AuthLDAPInitialBindPattern (.+) $1@example.com
AuthLDAPInitialBindPattern (.+) cn=$1,dc=example,dc=com

授權專用時不可用

如果此模組驗證使用者,則只能使用此指令,且在僅將此模組用於授權時無效。

偵錯

替代的 DN 記錄在環境變數 LDAP_BINDASUSER 中。如果正規表示式與輸入不符,則使用逐字使用者名稱。

另見

top

AuthLDAPMaxSubGroupDepth 指令

說明指定使用者搜尋終止前要評估的最大子群組層疊深度。
語法AuthLDAPMaxSubGroupDepth 數值
預設值AuthLDAPMaxSubGroupDepth 10
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性適用於版本 2.3.0 和更新版本

當這個指令設定為非零值 X,與使用 Require ldap-group someGroupDN 指令結合,提供的使用者憑證會作為 someGroupDN 目錄物件或目前的群組中任何群組成員進行搜尋,最高巢狀層級為本指令所指定的 X

檢視 Require ldap-group 區段,以取得更詳細的範例。

巢狀群組效能

AuthLDAPSubGroupAttributeAuthLDAPGroupAttribute 重疊時(預設為重疊,且為常見 LDAP 架構所要求),搜尋大型群組中的子群組會相當緩慢。如果您使用大型非巢狀群組,請將 AuthLDAPMaxSubGroupDepth 設定為零。

top

AuthLDAPRemoteUserAttribute 指令

說明使用於使用者查詢期間回傳的屬性值來設定 REMOTE_USER 環境變數
語法AuthLDAPRemoteUserAttribute uid
預設值
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

如果設定這個指令,REMOTE_USER 環境變數的值會設定為指定的屬性值。請確定將這個屬性包含在 AuthLDAPURL 定義的屬性清單中,否則,這個指令不會有任何效果。如果這個指令存在,將優先於 AuthLDAPRemoteUserIsDN。如果希望使用電子郵件地址讓使用者登入網站,但後端應用程式預期使用者名稱為使用者 ID,則這個指令會很有用。

top

AuthLDAPRemoteUserIsDN 指令

說明將客戶端使用者的 DN 用於設定 REMOTE_USER 環境變數
語法AuthLDAPRemoteUserIsDN on|off
預設值AuthLDAPRemoteUserIsDN off
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

如果將這個指令設定為 on,REMOTE_USER 環境變數的值會設定為經過驗證使用者的完整識別名稱,而不會只有客戶端傳遞的使用者名稱。在預設為關閉的狀態下,會將其關閉。

top

AuthLDAPSearchAsUser 指令

說明使用已驗證使用者的憑證來執行授權搜尋
語法AuthLDAPSearchAsUser on|off
預設值AuthLDAPSearchAsUser off
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性2.3.6 等更新版本可用

設定後,且 mod_authnz_ldap 已驗證使用者時,用於授權搜尋的 LDAP 搜尋將會使用所查詢的識別名稱 (DN) 和已驗證使用者的 HTTP 基本驗證密碼,而不是伺服器所配置的憑證。

ldap-filterldap-dn 授權檢查會使用搜尋。

只有當也啟用 AuthLDAPCompareAsUser 時,這個指令才會對巢狀群組處理期間進行的比較產生影響。

僅在 LDAP 伺服器不接受匿名搜尋且無法使用專用 AuthLDAPBindDN 時,才應使用此指令。

另見

top

AuthLDAPSubGroupAttribute 指令

說明指定群組屬性標籤,每個指示行一個值,用於區分群組中的已群組的成員。
語法AuthLDAPSubGroupAttribute 屬性
預設值AuthLDAPSubGroupAttribute 成員 uniqueMember
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性適用於版本 2.3.0 和更新版本

LDAP 群組物件可能包含使用者和群組的成員(稱為嵌套的或子群組)。AuthLDAPSubGroupAttribute 指示識別群組成員的標籤,而 AuthLDAPGroupAttribute 指示識別使用者成員的標籤。可透過多次指定此指示,使用多個屬性。未指定時,mod_authnz_ldap 會使用 memberuniqueMember 屬性。

top

AuthLDAPSubGroupClass 指示

說明指定哪些 LDAP objectClass 值識別在子群組處理期間是群組的目錄物件。
語法AuthLDAPSubGroupClass LdapObjectClass
預設值AuthLDAPSubGroupClass groupOfNames groupOfUniqueNames
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap
相容性適用於版本 2.3.0 和更新版本

LDAP 群組物件可能包含使用者和群組的成員(稱為嵌套的或子群組)。AuthLDAPSubGroupAttribute 指示識別可能為目前群組的子群組(而非使用者成員)的成員的標籤。 AuthLDAPSubGroupClass 指示用於驗證這些可能的子群組實際上是群組物件的 LDAP objectClass 值。接著可以搜尋已驗證的子群組,以取得更多的使用者或子群組成員。可透過多次指定此指示,使用多個屬性。未指定時,mod_authnz_ldap 會使用 groupOfNamesgroupOfUniqueNames 值。

top

AuthLDAPURL 指示

說明指定 LDAP 搜尋參數的 URL
語法AuthLDAPURL URL [NONE|SSL|TLS|STARTTLS]
內容目錄、.htaccess
覆寫AuthConfig
狀態擴充
模組mod_authnz_ldap

一個 RFC 2255 URL,它指定要使用的 LDAP 搜尋參數。URL 的語法如下:

ldap://主機:埠號/基礎 DN?屬性?範圍?篩選

如果您想要指定多個 LDAP URL,讓 Apache 可以依序嘗試,語法如下:

AuthLDAPURL "ldap://ldap1.example.com ldap2.example.com/dc=..."

注意事項:如果您指定多個伺服器,則需要將整個 URL 字串置於引號內;否則,您將會收到錯誤訊息:「AuthLDAPURL 有一個引數,定義 LDAP 連線的 URL..」 您當然也可以在每個 URL 上使用搜尋參數。

ldap
對於一般的 ldap,請使用字串 ldap。對於安全的 LDAP,請使用 ldaps。只有當 Apache 已連結到具有 SSL 支援的 LDAP 函式庫,才能使用安全的 LDAP。
主機:埠號

LDAP 伺服器的名稱/連接埠(預設值 For ldaplocalhost:389,For ldapslocalhost:636)。若要指定多個備援 LDAP 伺服器,請僅列出所有伺服器,中間以空格分隔。 mod_authnz_ldap 將嘗試逐一連線至每部伺服器,直到進行成功的連線。如果指定多個 LDAP 伺服器,則整個 LDAP URL 必須以雙引號括起來。

一旦連線至伺服器,該連線將會在 httpd 處理程序的執行期間或在 LDAP 伺服器停機之前保持啟用狀態。

如果 LDAP 伺服器停機並中斷現有連線, mod_authnz_ldap 將嘗試重新連線,從主要伺服器開始,再依序嘗試各個備援伺服器。請注意,這與真正的輪詢搜尋不同。

basedn
目錄分支(所有搜尋都應從該分支開始)的 DN。至少,這必須是目錄樹的頂端,但也可以指定目錄中的子樹。
attribute
要搜尋的屬性。儘管 RFC 2255 允許使用逗號分隔的屬性清單,但無論提供多少清單,只會使用第一個屬性。如果沒有提供任何屬性,預設會使用 uid。建議選擇一個屬性,讓其在您將使用的子樹中的所有條目中都是唯一的。所列出的所有屬性將會放入環境中,並加上 AUTHENTICATE_ 字首,以便其他模組使用。
scope
搜尋的範圍。可以是 onesub。請注意,RFC 2255 也支援 base 範圍,但此模組不支援。如果未提供範圍或指定 base 範圍,預設會使用 sub 範圍。
filter
有效的 LDAP 搜尋篩選器。如果未提供,預設為 (objectClass=*),這會搜尋樹中的所有物件。篩選器限制在約 8000 個字元(Apache 原始碼中 MAX_STRING_LEN 的定義)。這對於任何應用程式都應已綽綽有餘。在 2.4.10 和更新版本中,關鍵字 none 會停用篩選器的使用;部分原始 LDAP 伺服器需要這項功能。

執行搜尋時,HTTP 用戶端傳遞的屬性、篩選器和使用者名稱會組合成搜尋篩選器,其看起來像是 (&(filter)(attribute=username))

例如,考慮以下 URL:ldap://ldap.example.com/o=Example?cn?sub?(posixid=*)。當一位用戶端嘗試使用使用者名稱 Babs Jenson 進行連線時,產生的搜尋篩選器將會是 (&(posixid=*)(cn=Babs Jenson))

可以加入一個選用參數,讓 LDAP Url 可以覆寫連線類型。這個參數可以下列其中一個:

NONE
在預設 LDAP 埠建立不安全性連線。這和埠 389 上的 ldap:// 相同。
SSL
在預設安全 LDAP 埠建立安全連線。這和 ldaps:// 相同
TLS | STARTTLS
在預設 LDAP 埠建立進階安全連線。此連線預設會在埠 389 上啟動,然後進階為在同一個埠上的安全連線。

有關 AuthLDAPURL URL 的範例,請見上方。

提供語言:  en  |  fr 

top

註解

注意
這不是 QA 區段。放置在這裡的意見應針對改善文件或伺服器的建議,如果已實施或被認為無效/離題,社群管理員可能會移除。關於如何管理 Apache HTTP 伺服器的問題應導向 IRC 頻道,也就是在 Libera.chat 上的 #httpd,或傳送至我們的 郵件清單