2014-07-04 110 views
0

我有一個小問題,我需要知道更多關於,我已經建立了一個網站,通過活動目錄認證用戶,它使用PHP中的ldap函數完成,它的工作完美。問題是,我不'我知道如何訪問活動目錄後,我上傳到託管服務器的網站。我應該怎麼做?如何從網站訪問Active Directory?

這裏是進一步瞭解代碼: -

<?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

這真的取決於這個地方託管。如果Web服務器在當前的ActiveDirectory域中是本地的,那麼問題可能是您的Web服務器沒有明確的安全/網絡路徑到您的某個域控制器。

如果Web服務器是而不是本地到您當前的AD域(例如,您將它放在遠程主機上,如godaddy或hostgator),那麼您需要使用不同的身份驗證方法。具體來說,你需要看看:

SimpleSAMLphp和谷歌圍繞它如何與ADFS(Active Directory聯合服務)進行交互。面臨的挑戰是,您必須創建一種方式,使您的專用網絡及其私人託管的域控制器可以向網絡發送/接收極其敏感且極其需要的安全數據。

+0

嗯,我會看看,謝謝約翰:) – user3804193

0

這就是問題,因爲你的LDAP位於本地計算機上,對吧?

但是,您的網站位於服務器上並具有公共IP。因此,您必須擁有隧道才能訪問本地LDAP,或者您可以將LDAP發佈到外部,以便您的網站可以訪問您的LDAP。

+0

是的這是確切的問題,我問我怎麼能做那個兄弟?如你所說,如何將我的ldap發佈到外部? – user3804193

+0

嘗試使用動態DNS將您的域名或您的IP地址指向您的公共IP。 這就像你通過隧道到你的本地IP。 或 您可以在Cloud Virtual Server中使用OpenLDAP託管。 –