2010-07-14 6 views
1

우리는 최근에 osTicket Ticket System을 설치하여 우리 사무실에 구현할지 여부를 테스트했습니다. 기존의 열린 디렉토리에 대해 인증 할 수있는 능력이 있어야 도움이됩니다. 그것을 그러나os 티켓 오픈 디렉토리로 인증

/*compares user password*/ 
function check_passwd($password){ 
    // Change made for LDAP Auth based on -> http://osticket.com/forums/showthread.php?t=3312 
    // Change this line to the FQDN of your domain controller 
    $ds=ldap_connect('mydc.mydomain.local') or die("Couldn't connect to AD!"); 
    // Change this line to the name of your Active Directory domain 
    if ($ds) { 
     $domain="mydomain"; 
     $ldapbind = ldap_bind($ds); 
     if ([email protected]_bind($ds, $domain."\\".$this->username, $password)) { 
      // Auth failed! lets try at osTicket database 
      return (strlen($this->passwd) && strcmp($this->passwd, MD5($password))==0)?(TRUE):(FALSE); 
      // return(FALSE); 
     } 
     else{ 
      // Auth succeeded! 
      return(TRUE); 
     } 
     // End Changes 
    } 

} 

:

/*compares user password*/ 
function check_passwd($password){ 
    return (strlen($this->passwd) && strcmp($this->passwd, MD5($password))==0)?(TRUE):(FALSE); 
} 

새로운 코드는 : 나는 Active Directory를 사용하여 다음과 같은 코드를 대체하여 class.staff.php 파일 편집에 대한 이야기 ​​기사 (http://www.bauer-power.net/2010/04/how-to-make-osticket-160-authenticate.html를) 발견 여전히 연결할 수없는 것 같습니다. Active Directory가 아닌 OD를 사용해야하기 때문에 이것이라고 가정합니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

0

문제는 비교가 값을 전달하고, 대상 디렉토리의 값 사이에 암호를 할 노력하고 있다는 점이다 아론, 감사합니다.

추가 된 행 : strlen($this->passwd) && strcmp($this->passwd, MD5($password))==0)?(TRUE) 사용자가 입력 한 비밀번호를 MD5 해시로 가져 오려고 시도하며 검색된 비밀번호와 비교합니다.

그러나 그것은 너무 연결 디렉토리인지, 거대한 가정의 한 쌍을 만든다 : 그 해시에게 당신

를 반환 할

  • 기꺼이 암호 해시로 MD5를 사용

    1. 정말로 테스트 바인딩을 수행해야하고, 성공하면 예, 그렇지 않다면, 안돼! 암호 비교 기능도 수행 할 수 있어야합니다.

      대부분의 디렉토리 시스템에서 마지막 로그인 시간을 증가시키기 때문에 테스트 바인딩이 더 좋습니다.

  • +0

    감사를이에 대한 당신의 응답을. 나는이 모든 것에 익숙하지 않다. 테스트 바인딩을 어떻게 수행할까요? – Aaron

    0

    당신은 그것을 잘 작동,이 기능을 사용할 수 있습니다

    function check_passwd($password){ 
          $adServer = "ldap://dc.yourdomain.com"; 
    
          $ldap = ldap_connect($adServer); 
          $username = $this->username; 
          $password = $this->passwd; 
          $ldaprdn = 'yourdomain' . "\\" . $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 ($bind) { 
            echo "SUCCESS"; 
            return true; 
          } 
          else { 
            echo "FAILUR"; 
            return false; 
          } 
        }