我在Apache和LDAP方面取得了一些成功。 首先,它正在工作,但不完全。
所以,一个基本的LDAPconfiguration,看起来像这样:
AuthLDAPBindDN "omitting this" AuthLDAPBindPassword "passwordyeah!" AuthLDAPURL "ldap://DOMAIN.COM/ou=stuff,dc=domain,dc=com?userPrincipalName?sub?(objectClass=user)" LDAPReferrals Off AuthType Basic AuthName "Use your email address to connect." AuthBasicProvider ldap AuthUserFile /dev/null
这其实很好。 这里是奇怪的地方。 如果我把这个:
Require user [email protected]
我可以authentication。 我可以使用多个用户,这很好。 如果我放
Require valid-user
身份validation不起作用。 如果我尝试域用户,我会遇到失败。 (所有用户都是其中一员)
Require ldap-group CN=Domain Users,CN=Users,DC=DOMAIN,DC=COM
但是,如果我指的是一个较小的团体,那么它是有效的。
所以,当我只需要用户[email protected]进行身份validation时,我看到:
AH01697: auth_ldap authenticate: accepting [email protected]
当我把“要求有效的用户”我得到完全相同的消息。 但是,validation对话框反复出现。 每次authentication成功(根据日志)
为了日志的目的。 当我需要LDAP“域用户”我在日志中得到这个:
didn't match with attr member [Comparison false (adding to cache)][5 - Compare False]
(了解这个群体也是巨大的)当我使用一个较小的群体时,日志显示我这样的成功:
authorization successful (attribute member) [Comparison true (adding to cache)][6 - Compare True]
我只是不确定这里发生了什么。 但我真的很喜欢“有效的用户”只是工作。
我认为search基础是ou = stuff,dc = domain,dc = com可以防止find其他容器中的对象。 尝试设置基地只有dc =域,dc = com
您也可以删除objectclass = userfilter。 根据https://msdn.microsoft.com/en-us/library/windows/desktop/ms680857%28v=vs.85%29.aspx userprincipalname只在用户类中使用,所以它是隐含的。 在同一页面中,您可以读取它在全局编录端口中可用的信息,因此您可以使用它来代替正常的ldap绑定(应该更快)。
那么你的AuthLDAPURL将会是:
AuthLDAPURL ldap://DOMAIN.COM:3268 / dc = domain,dc = com?userPrincipalName?sub
这看起来很像在mod_authnz_ldap模块的“使用Active Directory”部分中的示例: https : //httpd.apache.org/docs/2.4/mod/mod_authnz_ldap.html
最后要注意的是:您使用的是domain.com srv主机符号(kuddos!),但是Apache并不知道AD网站。 因此,如果您有多个站点并且networking延迟很高,则可能是在远程查询ldap服务器,并且需要很长时间才能进行身份validation。