Apache-2.2
AuthLDAPURL 中的更多搜尋過濾器
是否可以在 AuthLDAPURL 中有多個搜尋過濾器?
範例 uid 過濾器:
<Location /test/> AuthType Basic AuthName "Test" AuthBasicProvider ldap AuthUserFile /dev/null AuthLDAPURL ldap://example.test.com/o=test,c=com?uid AuthLDAPBindDN "******" AuthLDAPBindPassword ****** require ldap-group cn=group01,o=test,c=com </Location>
我們需要搜尋uid或mail。像…
AuthLDAPURL ldap://example.test.com/o=test,c=com?uid|mail
解決方案(對我有用):
使用 Apache 2.4 http://httpd.apache.org/docs/current/mod/mod_authn_core.html測試
<AuthnProviderAlias ldap ldap-uid> AuthLDAPBindDN "******" AuthLDAPBindPassword ****** AuthLDAPURL "ldap://example.test.com/o=test,c=com?uid??(&(isMemberOf=cn=group01,o=test,c=com))" </AuthnProviderAlias> <AuthnProviderAlias ldap ldap-mail> AuthLDAPBindDN "******" AuthLDAPBindPassword ****** AuthLDAPURL "ldap://example.test.com/o=test,c=com?mail??(&(isMemberOf=cn=group01,o=test,c=com))" </AuthnProviderAlias> <Location "/test/"> Order deny,allow Allow from all AuthType Basic AuthName "Login with mail or uid" AuthBasicProvider ldap-uid ldap-mail LDAPReferrals Off Require valid-user </Location>
謝謝托寧!
我猜你的意思是尋找屬性
uid
或mod_authnz_ldap 單獨:不可能
Apache mod_authnz_ldap 文件指出 URL 必須是:
ldap://host:port/basedn?attribute?scope?filter
with
- 屬性:要搜尋的屬性。儘管RFC 2255允許使用逗號分隔的屬性列表**,但無論提供多少屬性,都只會使用第一個屬性**。如果未提供任何屬性,則預設使用 uid。選擇一個在您將使用的子樹中的所有條目中唯一的屬性是一個好主意。
- filter:一個有效的 LDAP 搜尋過濾器。如果未提供,則預設為 (objectClass=*),它將搜尋樹中的所有對象。過濾器限制為大約 8000 個字元(Apache 原始碼中 MAX_STRING_LEN 的定義)。這對於任何應用程序都應該綽綽有餘。
使用帶有 mod_authn_alias 的 2 個提供程序
但是,添加另一個 apache 模組,即mod_authn_alias,您可以使用 2 個不同的 LDAPURL 作為不同的身份驗證提供程序。為此,您可以添加一個新文件(將包含在您的 apache 配置的根目錄中),其中包含:
# Different LDAP attributes to be used as login <AuthnProviderAlias ldap ldap-uid> AuthLDAPURL ldap://example.test.com/o=test,c=com?uid AuthLDAPBindDN "******" AuthLDAPBindPassword ****** </AuthnProviderAlias> <AuthnProviderAlias ldap ldap-mail> AuthLDAPURL ldap://example.test.com/o=test,c=com?mail AuthLDAPBindDN "******" AuthLDAPBindPassword ****** </AuthnProviderAlias>
然後,在您的
<Location>
聲明中,您使用以下配置:<Location /test/> AuthType Basic AuthName "Test" AuthBasicProvider ldap-uid ldap-mail AuthUserFile /dev/null require ldap-group cn=group01,o=test,c=com </Location>
這將首先嘗試使用 進行身份驗證
uid
,如果失敗,請嘗試使用該不過,您必須注意一件事,LDAP 搜尋必須返回單個值,否則您將不確定將使用多個條目中的哪一個來檢查密碼。為此,您可以使用範圍(
one
而不是sub
)或搜尋過濾器來限制返回的條目數。附加文件必須添加到您的 apache 配置中,
<Location>
或任何<VirtualHost>
指令之外。它必須包含在您的 apache 配置的根級別。當然,authn_alias
模組需要被啟動。