2013-03-04 1 views
1

PHP 웹 애플리케이션이 있습니다. 사용자가 그것을 열면 Windows 시스템의 ID로 로그인해야합니다. 사용자를 다시 인증하지 않습니다.PHP 스크립트에서 windows 로그인 ID를 얻으려면 어떻게해야합니까?

Active Directory에 대해 들었지만 사용자를 다시 인증하고 싶지 않습니다. 내 웹 응용 프로그램을 열면 사용자 이름을 자동으로 캡처해야합니다.

PHP 스크립트에서 로그인 ID를 얻으려면 어떻게해야합니까?

또한 mod_ntlm 환경 및 REMOTE_USER 변수 등에 대해 Apache 서버를 구성하는 것에 대해 들어 봤습니다. 모든 것을 모릅니다. 어느 누구도 그것을 매우 간단하게 놓을 수 있습니다. 그래서 나는 모든 것을 구성하고 구성 할 수 있습니까?

+0

사용자가 Windows에서 사용자를 검색하는 것을 어떻게 알 수 있습니까? – Joe

답변

2

내부 LAN에서만 실행되고 네트워크의 모든 Windows 컴퓨터가 SBS 또는 완전 손상된 Windows Active Directory에 대해 인증하는 경우 LDAP 쿼리로 페이지를 탐색하는 사용자의 로그인을 쿼리 할 수 ​​있습니다. 저는 몇 년 전부터 인트 라넷을 위해 이것을 해왔습니다. 꽤 신뢰할 만하지만 Windows 도메인에 대해 인증 된 내부 사용자 만 사용할 수 있습니다.

기본 LDAP 쿼리

<?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 로그인 ID를 얻을 수 있는지 의심 스럽습니다. 보안 상 심각한 문제가 될 수 있습니다.

0

는 지금까지 내가 알고, 당신이 할 수있는 최선은 (그들이 한 번 인증 한 후) 사용자의 IP를 저장하고 자동으로 그들을 로그인하는 것을 사용한다. $ _SERVER [ 'REMOTE_ADDR']에서 사용자의 IP를 얻을 수 있습니다.

IP는 스푸핑 될 수 있으며 변경 될 수 있습니다 (때로는 자주는 아니지만 때로는 거의 사용하지 않음). 따라서 누군가를 자동으로 로그인하는 데 매우 안전하거나 신뢰할 수있는 방법은 아닙니다. 그러나 응용 프로그램의 성격에 따라 충분할 수 있습니다. 특히 인트라넷에서만 사용하는 경우 (필요한 경우 정적 ips를 설정할 수 있음).

관련 문제