如何在 Apache LDAP 中對嵌套組中的使用者進行身份驗證?
我正在使用以下設置進行 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 的過濾器。這是一個特殊的“擴展”匹配運算符,它將對像中的祖先鏈一直遍歷到根,直到找到匹配項。
也可以看看: