레이블이 Active Directory인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Active Directory인 게시물을 표시합니다. 모든 게시물 표시

2016년 11월 24일 목요일

php 로 Active Directory 의 lastLogon 구하기

php로 Active Directory 인증/조회/수정을 할 수 있도록  adLDAP class 를 사용하고 있다.



lastLogon 특성을 매 분마다 수집하여 사용하고자 한다.

그런데 문제는 AD 서버가 2대인데 사용자 인증에 사용된 서버에서만 lastLogon 특성 값이 업데이트가 된다.

그래서 양쪽 서버에서 조회한 값을 비교해서 합쳐주도록 했다.
$options1 = array("domain_controllers" => array("ad1st"));
$options2 = array("domain_controllers" => array("ad2nd"));

$adldap1 = new adLDAP($options1);
$adldap2 = new adLDAP($options2);

$users = $adldap1->user()->all(true,"*", true);
$lastLogons = array();
foreach($users as $id => $name ) {
    $info1 = $adldap1->user()->infoCollection($id, array("*"));
    $mktime1 = round(convertWindowsTimestamp($info1->lastLogon));

    $info2 = $adldap2->user()->infoCollection($id, array("*"));
    $mktime2 = round(convertWindowsTimestamp($info2->lastLogon));

    if( $mktime1 >  $mktime2 ) {
        $mktime = $mktime1;
        $auth = "ad1st";
    } else if( $mktime1 < $mktime2 ) {
        $mktime = $mktime2;
        $auth = "ad2nd";
    } else {
        $mktime = $mktime1;
        $auth = "ad1st";
    }

    $lastLogon = date("YmdHis", $mktime);
    $lastLogons["$id"] = array("auth" => $auth, "lastlogon" => $lastLogon);
}

전체 사용자 정보를 담은 인스턴스를 생성 후 각 사용자 마다 lastLogon 정보를 찾아서 비교 후에 다시 배열로 저장했다.

그런데 lastLogon 의 값은 linux 의 mktime() 값과 다르기에 convertWindowsTimestamp()를 사용하였다.

function convertWindowsTimestamp($wintime) {
   return $wintime / 10000000 - 11644473600;
}


2014년 10월 13일 월요일

워크스테이션과 주 도메인 사이의 트러스트 관계에 이상이 있습니다.


증상 :
  • "워크스테이션과 주 도메인 사이의 트러스트 관계에 이상이 있습니다."
  • windows 로그인을 하려고하는데 갑자기 위와 같은 메시지와 함께 로그인을 할 수가 없다.
  • domain users 와 domain administrator 모두 로그인 불가

사용자 환경
  • win7 32bit

도메인 환경:
  • windows 2008 R2 

조치 방법
  1. 로컬 계정으로 로그인
    • 활성화된 로컬 계정이 없는 경우
      1. [안전모드]로 부팅
      2. 도메인 계정으로 로그인
        • 네트워크 연결을 사용하지 않는 [안전모드] 부팅 시 기존에 로그인했었던 도메인 계정으로 로그인이 가능하다.
      3. 컴퓨터 > 관리 > 사용자 및 그룹 에서 로컬 컴퓨터의 default administrator 계정을 활성화
      4. 재부팅 후 활성화한 default administrator 계정으로 로그인
      5. default administrator 계정이 없는 경우 admin 권한 가진 계정을 추가한다.
      6. 재부팅 후 로컬 계정으로 로그인 한다.
  2. 컴퓨터 > 속성 > 컴퓨터 이름/도메인 변경 > 작업 그룹을 WORKGROUP 로 변경 후 재부팅한다.
    • 도메인 탈퇴 시 domain administrator 권한 필요
  3. 다시 로컬 계정으로 로그인 후 도메인에 재 가입 후 재부팅한다.
  4. 도메인 계정으로 정상 로그인이 가능한지 확인 한다.