0

编辑:今天早上进一步研究后,我试图让我的帖子更具体:

我在公司数据中心的 Web 服务器上运行了一个 php 脚本。我们的客户需要使用单点登录从其用户的 Windows 工作站访问该脚本。php 服务器无权访问 windows 用户登录的域。

有没有办法让用户打开 Internet Explorer(或类似的),访问我正在开发的网站并且网站“知道”他们的用户名?该站点还需要拒绝不属于客户域的任何人的访问。

所以要清楚,我遇到的主要问题是运行 php 脚本的服务器不是访问它的用户所在域的一部分。

旁注:如果无法实现真正​​的 SSO,并且用户必须再次重新输入用户名和密码,那没关系,但我想这意味着身份验证是由 php 脚本完成的,这是不可能的,因为它无法访问客户端广告服务器。

谢谢 :)

原帖:

就在一些链接或一般信息开始之后。我正在 example1.com 上构建一个基于 php 的网站,但要访问它,用户需要针对 example2.local 上的活动目录进行身份验证。无法在 Internet 上访问 example2.local 的域控制器。用户将登录到 example2.local 域中的 Windows 工作站,并且可以访问 Internet。

有什么办法可以工作吗?我被告知要查看“单点登录”,但到目前为止我发现的所有内容都表明广告域应该是 example2.com(而不是 .local)。这里的一位同事向我保证,域控制器通常无法被更广泛的互联网访问。那么这通常是如何完成的?

客户也强调了安全性的必要性。

谢谢

编辑:在阅读了有关 SSO 的更多信息后,我可能会更加困惑,但我想补充一点,我的 php 应用程序需要知道的是 1)用户在他们的域中经过身份验证,2)他们的用户名。实现这一目标的最简单方法是什么?谢谢!

4

1 回答 1

0

http://www.php.net/manual/en/book.ldap.php

我实际上只是实现了一个基本的 LDAP 身份验证脚本。这是我在更改和弄乱它以适应我的设置之前的第一个脚本草稿。这基本上连接到服务器,如果不是,则脚本被杀死。然后尝试验证给定的用户名和密码,如果没有,则失败。快速简单。

$ldapHost = "example2.com";
$ldapPort = 666;
$ldapBaseDn = "ldap base dn here";
$username = "username";
$password = "password";
$ldapUserDn = "uid=$username,".$ldapBaseDn;

echo "LDAP query test\n";
echo "Connecting ...\n";
$ldapConn = ldap_connect($ldapHost, $ldapPort)
    or die("Unable to connect to LDAP server: $ldapHost\n");

echo "Authenticating user ...\n";
$isValid = ldap_bind($ldapConn, $ldapUserDn, $password)
    or die("Unable to authenticate user: $username\n");

echo "User $username is successfully authenticated!\n";

echo "Closing connection ...\n";
ldap_close($ldapConn);

exit();

?> 
于 2013-09-12T23:25:42.177 回答