我有一个小问题,我需要了解更多,我已经构建了一个通过Active目录验证用户的网站,它是在PHP中使用ldap
函数完成的,它运行良好。问题我将网站上传到托管服务器后,我不知道如何访问Active目录。我应该做的步骤是什么?
这是进一步理解的代码: -
<?php
if(isset($_POST['username']) && isset($_POST['password'])){
$adServer = "ldap://Qarunho.local";
$ldap = ldap_connect($adServer);
$username = $_POST['username'];
$password = $_POST['password'];
$ldaprdn = 'Qarunho' . "\\" . $username;
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
$bind = @ldap_bind($ldap, $ldaprdn, $password);
if(!empty($_POST['username'])&&!empty($_POST['password'])){
if ($bind) {
$filter="(sAMAccountName=$username)";
$result = ldap_search($ldap,"dc=Qarunho,dc=Local",$filter);
ldap_sort($ldap,$result,"sn");
$info = ldap_get_entries($ldap, $result);
for ($i=0; $i<$info["count"]; $i++)
{
if($info['count'] > 1)
break;
$_SESSION['sn'] = $info[$i]["givenname"][0].' '.$info[$i]["sn"][0];
header('location:manager_page.php');
}
@ldap_close($ldap);
}
?>
提前感谢..... :)
答案 0 :(得分:0)
这实际上取决于托管的位置。如果网络服务器是您当前的ActiveDirectory域的本地服务器,则问题可能是您的网络服务器没有明确的安全/网络路径到您的某个域控制器。
如果您的当前AD域的Web服务器不(例如,您将其放在像godaddy或hostgator这样的远程主机上),那么您需要使用不同的身份验证方法。具体来说,您需要查看:
SimpleSAMLphp并谷歌了解它如何与ADFS(Active Directory联合服务)进行交互。挑战在于,您必须创建一种方式,使您的私有网络与其私有托管的域控制器可以向Web发送/接收极其敏感,极其需要安全的数据。
答案 1 :(得分:0)
这个问题,因为您的LDAP在本地计算机上,对吧?
但是,您的网站位于服务器上并具有公共IP。因此,您必须具有到本地LDAP的隧道,或者您可以将LDAP发布到外部,因此您的网站可以访问您的LDAP。