Apache-2.2

如何在 Apache LDAP 中對嵌套組中的使用者進行身份驗證?

  • February 7, 2018

我正在使用以下設置進行 LDAP 身份驗證

AuthName            "whatever"
AuthType            Basic
AuthBasicProvider   ldap
AuthLDAPUrl         "ldap://server/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
Require ldap-group  CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local

這可行,但是我必須將我想要驗證的所有使用者放入MySpecificGroup. 但是在我配置的 LDAP 伺服器上,MySpecificGroup它還包含MyOtherGroup具有另一個使用者列表的組。

但是那些使用者MyOtherGroup沒有經過身份驗證,我必須手動將它們全部添加到MySpecificGroup並且基本上不能使用嵌套分組。我正在使用 Windows SBS 2003。

有沒有辦法配置 Apache LDAP 來做到這一點?或者是否存在可能無限遞歸的問題,因此不允許?

您需要進行設置AuthLDAPSubGroupDepth才能完成這項工作。您在此處提供的整數指定在使用者搜尋停止之前將評估的最大子組嵌套深度。

將此添加到您的配置中:

AuthLDAPSubGroupDepth 1

更多資訊:這里這裡

此外AuthLDAPSubGroupDepth,這僅在 apache 2.4 中可用,當使用 Microsoft AD LDAP 時,可以使用 LDAP_MATCHING_RULE_IN_CHAIN 匹配規則使用嵌套組進行授權。這比在客戶端搜尋子組要快得多,因為它是在 DC 伺服器上完成的,通過網路進行的查詢較少。

Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=Access to Apache,OU=My Organization Unit,DC=company,DC=com

該字元串1.2.840.113556.1.4.1941是一個名為的OIDLDAP_MATCHING_RULE_IN_CHAIN。此 OID 由 Microsoft 分配,用於其 LDAP 實現(Active Directory 的一部分)。您不能將它與其他 LDAP 伺服器一起使用。人類可重新編寫的格式是:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)

來自微軟文件:

此規則僅限於適用於 DN 的過濾器。這是一個特殊的“擴展”匹配運算符,它將對像中的祖先鏈一直遍歷到根,直到找到匹配項。

也可以看看:

引用自:https://serverfault.com/questions/269344