【问题标题】:Authenticating via LDAP for the current windows user's credentials?通过 LDAP 对当前 Windows 用户的凭据进行身份验证?
【发布时间】:2015-08-05 22:23:20
【问题描述】:

我们有一个使用 WAMP(W 代表 Windows,P 代表 PHP)在 Windows 桌面的 Intranet 上托管的应用程序。我们需要实现一个新功能 - 每当用户访问我们的 Intranet 站点时,通过使用他/她的窗口登录凭据来验证用户的身份。

这里我缺少一些实现它的基本概念——如何在 PHP 中访问当前登录用户详细信息的窗口。

有什么方法可以检测出当前用户是谁,并将此用户数据传递给我们的 LDAP 服务器进行验证?

【问题讨论】:

  • PHP 不提供身份验证,Web 服务器提供。在您的情况下,Apache 并不是真正为集成 Windows 身份验证而设计的,尽管已经为它编写了模块。另一方面,如果您可以切换到 IIS,那么您将免费获得集成身份验证。
  • 您可以访问环境变量,它可以告诉您用户名——但前提是用户而不是服务器正在运行应用程序。
  • @Neil:感谢您提供的信息。您能否告诉我们 IIS 将如何帮助我们实现目标?请注意,在服务器端,我们使用的是 PHP 脚本。因此,对于 LDAP 验证,我需要在我的 PHP 脚本中包含用户详细信息。从 env 变量获取有点冒险,因为它可能会被覆盖。请注意,我们也可以让用户从 MAC / Linux 桌面登录
  • @Prakash 您将更改 IIS 配置以禁止匿名访问并启用集成身份验证。然后 IIS 将与 Internet Explorer 协商身份验证。然后它将 HTTP_AUTH_USER 服务器变量设置为用户名。

标签: php


【解决方案1】:

看这里:http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

是身份验证的一半。

请注意,apache 需要设置 KeepAlive On 设置。

它将为您提供当前用户的登录名/域/工作站信息。

如果您需要完整的 NTLM 身份验证方案支持,您的 Web 服务器需要模块。

看这里:http://modntlm.sourceforge.net/

这里:http://bloke.org/linux/ntlm-authentication-active-directory-on-apache-linux/

在这两种情况下,对于 IE,URL 都需要位于“受信任区域”中,对于 Firefox,URL 需要类似的设置。

【讨论】:

  • 我们有用户拥有 MAC / Linux 桌面 上述解决方案是否适用于他们 - 我的意思是如果他们使用 MAC / Linux 桌面中的浏览器访问我们的 Intranet 站点,我们是否能够检索详细信息?跨度>
  • 不,您要求“通过 LDAP 验证当前 Windows 用户的凭据” - 没有 MAC 没有 Linux
  • 抱歉造成混淆 - 最初他们都是 Windows 操作系统,后来他们可以将桌面更改为 MAC / Linux,但他们的凭据保持不变以访问我们的组织 n/w
【解决方案2】:

我建议您使用 mod_auth_sspi - Apache 2.x 身份验证模块。设置非常简单。

这里是主页http://sourceforge.net/projects/mod-auth-sspi/

您可以保护位置、文件夹或特定文件。您可以允许/拒绝特定的用户、组、域等。

我在运行 apache 2.2 和 PHP 5.2 的 Windows 2008 服务器上实现了这一点,它对我的​​ SSO 完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2014-06-12
    相关资源
    最近更新 更多