다음을 통해 공유


Active Directory Domain Services 알림 변경

Active Directory Domain Services 클라이언트 애플리케이션이 도메인 컨트롤러에 등록하여 변경 알림을 수신하는 메커니즘을 제공합니다. 이를 위해 클라이언트는 비동기 LDAP 검색 작업에서 LDAP 변경 알림 컨트롤을 지정합니다. 또한 클라이언트는 다음 검색 매개 변수를 지정합니다.

매개 변수 설명
범위
개체만 모니터링할 LDAP_SCOPE_BASE 지정하거나 개체 자체를 포함하지 않고 개체의 직접 자식을 모니터링할 LDAP_SCOPE_ONELEVEL 지정합니다. LDAP_SCOPE_SUBTREE 지정하지 마세요. 기본 개체가 명명 컨텍스트의 루트인 경우 하위 트리 scope 지원되지만 명명 컨텍스트의 개체가 수정될 때마다 LDAP 검색 결과 메시지를 생성하기 때문에 해당 사용은 서버 성능에 심각한 영향을 미칠 수 있습니다. 임의의 하위 트리에 대한 LDAP_SCOPE_SUBTREE 지정할 수 없습니다.
필터
"(objectclass=*)"의 검색 필터를 지정합니다. 즉, 지정된 scope 개체의 변경 내용에 대한 알림을 받습니다.
특성
변경이 발생할 때 반환할 특성 목록을 지정합니다. 지정된 특성뿐만 아니라 모든 특성이 수정될 때 알림을 받습니다.

단일 LDAP 연결에 최대 5개의 알림 요청을 등록할 수 있습니다. 알림을 대기하고 신속하게 처리하는 전용 스레드가 있어야 합니다. ldap_search_ext 함수를 호출하여 알림 요청을 등록하면 함수는 해당 요청을 식별하는 메시지 식별자를 반환합니다. 그런 다음 ldap_result 함수를 사용하여 변경 알림을 기다립니다. 변경이 발생하면 서버는 알림을 생성한 알림 요청에 대한 메시지 식별자가 포함된 LDAP 메시지를 보냅니다. 이렇게 하면 ldap_result 함수가 변경된 개체를 식별하는 검색 결과와 함께 반환됩니다.

클라이언트 애플리케이션은 모니터링되는 개체의 초기 상태를 결정해야 합니다. 이렇게 하려면 먼저 알림 요청을 등록한 다음 현재 상태를 읽어야 합니다.

클라이언트 애플리케이션은 변경의 원인도 확인해야 합니다. 기본 수준 검색의 경우 특성이 변경되거나 개체가 삭제되거나 이동되면 알림이 발생합니다. 한 수준 검색의 경우 자식 개체가 생성, 삭제, 이동 또는 수정되면 알림이 발생합니다. 대상 개체 위의 계층에서 개체를 이동하거나 이름을 바꾸면 대상의 고유 이름이 변경되더라도 알림이 생성되지 않습니다. 예를 들어 컨테이너의 자식 개체에 대한 변경 내용을 모니터링하는 경우 컨테이너 자체가 이동되거나 이름이 바뀐 경우 알림을 받지 못합니다.

클라이언트는 검색 결과를 처리할 때 ldap_get_dn 함수를 사용하여 변경된 개체의 고유 이름을 가져올 수 있습니다. 고유 이름이 변경될 수 있으므로 고유 이름을 사용하여 추적된 개체를 식별하지 마세요. 대신 검색할 특성 목록에 objectGUID 특성을 포함합니다. 각 개체의 objectGUID 는 개체가 엔터프라이즈 포리스트 내에서 이동되는 위치에 관계없이 변경되지 않은 상태로 유지됩니다.

검색 scope 내의 개체가 삭제되면 클라이언트는 변경 알림을 받고 개체의 isDeleted 특성은 TRUE로 설정됩니다. 이 경우 검색 결과는 해당 파티션의 지운 개체 컨테이너에 있는 개체의 새 고유 이름을 보고합니다. 개체 삭제 알림을 받으려면 삭제 표시 컨트롤(LDAP_SERVER_SHOW_DELETED_OID)을 지정할 필요가 없습니다. 자세한 내용은 삭제된 개체 검색을 참조하세요.

클라이언트가 알림 요청을 등록한 경우 클라이언트는 연결이 끊어지거나 클라이언트가 ldap_abandon 함수를 호출하여 검색을 중단할 때까지 알림을 계속 받습니다. 예를 들어 서버가 실패하는 경우 클라이언트 또는 서버의 연결이 끊어지면 알림 요청이 종료됩니다. 클라이언트가 다시 연결되면 알림을 다시 등록한 다음 클라이언트 연결이 끊어진 동안 변경된 경우 관심 개체의 현재 상태를 읽어야 합니다.

클라이언트는 개체의 uSNChanged 특성 값을 사용하여 서버에서 개체의 현재 상태가 클라이언트가 받은 최신 변경 내용을 반영하는지 여부를 확인할 수 있습니다. 시스템은 개체를 이동하거나 수정할 때 개체의 uSNChanged 특성을 늘입니다. 예를 들어 서버가 실패하고 디렉터리 파티션이 백업에서 복원되는 경우 개체의 서버 복제본(replica) 이전에 클라이언트에 보고된 변경 내용을 반영하지 않을 수 있습니다. 이 경우 서버의 uSNChanged 값이 클라이언트에 저장된 값보다 낮습니다.

비동기 LDAP 검색 작업에서 LDAP 변경 알림 컨트롤을 사용하는 코드 예제 및 자세한 내용은 변경 알림 수신에 대한 예제 코드를 참조하세요.

LDAP 변경 알림 컨트롤을 사용하는 시기에 대한 자세한 내용은 변경 내용 추적 기술 개요를 참조하세요.