7

我创建了一些需要用户登录的基于 PHP 的 Intranet 资源。用户创建自己的登录名,我验证他们是否使用 cookie 登录。

有人问我是否可以将该登录名绑定到他们的 Windows 登录名。我最初的反应是“网页无法访问您的 Windows 登录名——这将是一个安全风险。” 但是我们的一个部门使用 Sharepoint,它实际上将自己与 Windows 登录绑定在一起。

这是怎么做的?我可以用 PHP 做吗?如果是这样,为什么它不是一个可怕的安全漏洞?

4

3 回答 3

8

您正在寻找的是针对 PHP 网站的 NTLM 身份验证,这是完全可行的,但似乎 PHP 中没有单一的方法可以做到这一点。

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

您还需要将站点添加到 IE 中的受信任站点(或您使用的任何浏览器中的等效站点),并在受信任站点的设置中,打开“发送当前用户名和密码”。

这不是一个可怕的安全漏洞,因为凭据不是通过网络直接发送的,并且最终用户已明确告诉浏览器将凭据发送到相关网站。

于 2009-03-11T16:07:03.443 回答
5

PHP 支持 LDAP,因此您可以访问 Windows 的 Active Directory

SourceForge 上有这个项目: adLDAP - “LDAP Authentication with PHP for Active Directory”

于 2009-03-11T16:02:20.427 回答
4

通常这是使用 LDAP 和 NTLM 的组合来完成的。像 IE 和 Firefox 这样的浏览器可以进行 NTLM 身份验证,我相信这就是 Sharepoint 的工作原理。我运行一个基于 Java 的门户应用程序,该应用程序使用 LDAP 同步用户并使用 NTLM 进行身份验证。

您绝对不想做的是让用户在浏览器中输入他们的域用户名和密码。在过去的几年里,我见过几个项目使用这种方法和 LDAP 来验证 Windows 用户。你是对的,这是一个安全问题。用户只应输入一次密码:登录工作站时。您最不想要的是缓存/临时文件中的密码。

很抱歉,我无法提供“这是您如何使用 PHP 应用程序”的答案。据我所知,这个问题没有一个答案。

(我过去做过的一件事是使用 IIS 中的 PHP,但我从未真正检查过它是有效还是不良形式。如果您使用的是 IIS,那么 PHP 将使用 Windows 填充服务器变量 REMOTE_USER用户的用户名(域\用户)。它适用于我当时正在做的事情。)

于 2009-03-11T16:12:34.910 回答