如何使用Apache,PHP和LDAP从计算机获取AD用户凭据

时间:2013-01-31 21:00:35

标签: php apache authentication active-directory ldap

我们正在尝试实施集成AD和PHP Web应用程序的单点登录解决方案。当用户尝试访问Intranet网站时,应该会发生这种情况:

  • Web应用程序要求服务器读取已登录到Windows / AD的用户的计算机中存储的AD凭据。
  • AD“将AD用户名传递给Apache”
  • 使用PHP,我读了存储的凭据 - 我理解 - 在$ _SERVER ['PHP_AUTH_USER']

这一切都只适用于内部网。在它之外,我们只显示一个登录表单。

我们对这个过程感到有点困惑。从other sources开始,我们使用以下指令配置Apache,但最终不成功,内部服务器错误消息并且错误日志中没有任何内容。

<Location "/">
    Options -Indexes MultiViews FollowSymLinks
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "VALIDAUTHNAME"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative   Off
    AuthLDAPURL "ldap://IP.FOR.THE.SERVER:389/DC=MYCOMPANY,DC=CL?sAMAccountName?sub?(objectClass=*)"
    AuthLDAPBindDN "DC=MYCOMPANY,DC=MYCOUNTRY"
    Require ldap-attribute gidNumber=10000
</Location>

我们必须实施的流程有明确的解释吗?我们已经阅读了许多有关逆过程的内容,将凭据传递给AD,但对此案例并不多。我们的系统管理员在这方面并不是很有经验,所以他们没有多大帮助。

1 个答案:

答案 0 :(得分:1)

几个月前,我用mod_auth_nltm_winbind完成了你想要做的事情。它的配置并不是很困难,但熟悉winbind会有所帮助。如果你不是,你的系统管理员应该能够提供帮助。 winbindsamba包的一部分,因此它可能已安装在您的服务器上。一旦你设置了winbind,你只需要启用apache模块并进行一些配置。该模块的站点应该能够指导您完成它。当我最初设置它时,我使用IE8,Chrome和旧版本的Firefox(可能是5或6)测试它们,它们本身都支持NTLM身份验证。如果所有内容都已配置并且工作正常,则apache模块将使用用户名自动填充$_SERVER['PHP_AUTH_USER'],而无需与用户进行任何交互,您可以从那里执行任何操作。现在有更多文档可用,即使之前缺少文档,我只有一个主要问题,现在已经很好地记录了修复。