2013-03-04 5 views
1

У меня есть веб-приложение PHP. Когда пользователь открывает его, мне нужно получить идентификатор входа в систему Windows. Я еще не аутентифицирую пользователя.Как получить идентификатор входа в Windows из PHP-скрипта?

Я слышал об Active Directory, но я не хочу снова аутентифицировать пользователя. Когда мое веб-приложение открыто, имя пользователя должно быть записано автоматически.

Как я могу получить идентификатор входа в моем PHP-скрипте?

Я также слышал о настройке сервера Apache для среды mod_ntlm и переменной REMOTE_USER и т. Д. Я не знаю всех этих. Может ли кто-нибудь сделать это очень просто, чтобы я мог продолжить и настроить все это?

+0

Откуда вы знаете, что пользователь просматривает его из Windows? – Joe

ответ

2

Если вы работаете только во внутренней локальной сети, и все машины Windows в сети проходят проверку подлинности либо в SBS, либо в полноэкранном режиме Windows Active Directory, вы можете запросить логин пользователя, просматривающего страницу с запросом LDAP. Я делал это много лет назад для интрасети. Он довольно надежный, но работает только для внутренних пользователей, прошедших аутентификацию против домена Windows.

BASIC LDAP QUERY

<?php 

    // basic sequence with LDAP is connect, bind, search, interpret search result, 
    // close connection 

    $ds=ldap_connect("192.168.0.1");  // ! Your LDAP/Active Direcotry Server ! 
    echo "Connection: ".$ds.""; 

    if ($ds) { 
      echo "Binding .."; 
      $r=ldap_bind($ds);  // this is an "anonymous" bind, typically read-only access 
      echo "Bind result is ".$r.""; 
      echo "Searching for (sn=A*) .."; // this example searches surname entry for all surnames starting with A 
      $sr=ldap_search($ds,"o=Organisation Name, c=UK", "sn=A*"); // ! must use real base dn here ! 
      echo "Search result is ".$sr.""; 
      echo "Number of entires returned is ".ldap_count_entries($ds,$sr).""; 
      echo "Getting entries ..."; 
      $info = ldap_get_entries($ds, $sr); 
      echo "Data for ".$info["count"]." items returned:"; 

      for ($i=0; $i<$info["count"]; $i++) { 
       echo "dn is: ". $info[$i]["dn"] .""; 
       echo "first cn entry is: ". $info[$i]["cn"][0] .""; 
       echo "first email entry is: ". $info[$i]["mail"][0] .""; 
      } 
    //now close connection 
    ldap_close($ds); 
} else { 
    echo "Unable to connect to LDAP server"; 
} 
?> 
0

Я очень сомневаюсь, что любое веб-приложение может получить идентификатор входа в Windows - это будет довольно серьезная проблема безопасности.

0

Насколько мне известно, лучшее, что вы можете сделать, это сохранить IP пользователя и использовать его для автоматического входа их в (после того, как они аутентифицирован один раз). Вы можете получить ip пользователя от $ _SERVER ['REMOTE_ADDR'].

Имейте в виду, что IP-адреса могут быть подделаны и могут меняться (иногда часто, а иногда и редко), поэтому это не очень безопасный или надежный способ автоматического входа в систему. Однако, в зависимости от характера вашего приложения, этого может быть достаточно. В частности, если вы используете его только в интрасети (в этом случае вы можете установить статические ips, если это необходимо).