【问题标题】:How to obtain AD user credentials from computer with Apache, PHP and LDAP如何使用 Apache、PHP 和 LDAP 从计算机获取 AD 用户凭据
【发布时间】:2013-01-31 21:00:34
【问题描述】:

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

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

这一切都意味着只能在 Intranet 中工作。在它之外,我们只显示一个登录表单。

我们对这个过程有些困惑。从 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 的内容,但关于这个案例的内容并不多。我们的系统管理员在这方面并没有真正的经验,所以他们帮不上什么忙。

【问题讨论】:

  • 您是否尝试在没有用户登录网络应用程序的情况下执行此操作?当您说“登录用户的 Windows 帐户”时,用户是登录 Windows 还是登录 Web 应用程序?
  • 是的,我试图避免显示 Web 应用程序的登录表单,实际上是使用他的凭据登录用户,这就是我所说的单点登录。我正在尝试登录我的应用程序,用户已经登录到 Windows/AD,并且 AD 凭据存储在他的计算机中。我试图在问题中更清楚地说明。

标签: php apache authentication active-directory ldap


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多