다음을 통해 공유


KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST 구조체(ntsecapi.h)

사용자가 특정 DC(도메인 컨트롤러)에 바인딩하여 Kerberos 도메인 바인딩 캐시를 재정의할 수 있습니다. Kerberos는 DAC(동적 Access Control)가 사용하도록 설정된 경우 DC 조회를 적용하므로 일반적으로 인증은 특정 DC에 바인딩되지 않습니다. 특정 사용자는 계정을 만든 특정 DC에 바인딩하거나 DC 복제 지연을 방지하기 위해 새 암호를 설정할 수 있습니다. SeTcbPrivilege 권한이 설정되어 있어야 합니다.

구문

typedef struct _KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST {
  KERB_PROTOCOL_MESSAGE_TYPE MessageType;
  UNICODE_STRING             RealmName;
  UNICODE_STRING             KdcAddress;
  ULONG                      AddressType;
  ULONG                      DcFlags;
} KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST, *PKERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST;

멤버

MessageType

LsaCallAuthenticationPackage 함수를 호출하여 Kerberos 인증 패키지로 보낼 수 있는 메시지 유형을 나열하는 KERB_PROTOCOL_MESSAGE_TYPE 열거형의 값입니다. 이 멤버는 KerbAddBindingCacheEntryExMessage로 설정해야 합니다.

RealmName

도메인 컨트롤러의 영역 이름입니다.

KdcAddress

바인딩할 서버의 KDC(키 배포 센터)의 주소입니다.

AddressType

KdcAddress 멤버에 포함된 문자열의 형식입니다. 다음 값 중 하나일 수 있습니다.

의미
DS_INET_ADDRESS
주소는 도메인 컨트롤러의 문자열 IP 주소(예: "\\157.55.94.74")입니다.
DS_NETBIOS_ADDRESS
주소는 도메인 컨트롤러의 NetBIOS 이름입니다(예: "\\phoenix").

DcFlags

호출자가 제공하는 도메인 컨트롤러 플래그입니다. DsGetDcName 함수에 전달하려면 이러한 플래그가 필요합니다.

설명

사용자의 요구 사항과 Kerberos 요구 사항을 모두 충족하려면 Kerberos 도메인 바인딩 캐시를 재정의하기 위해 두 번의 호출을 수행해야 합니다.

  1. 먼저 MessageType 멤버를 KerbQueryDomainExtendedPoliciesMessage로 설정해야 하는 KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST 요청 메시지 유형을 생성합니다. DomainName 멤버는 확장된 도메인 정책을 쿼리하는 실제 도메인 이름으로 설정됩니다. DomainName이 null로 설정된 경우 로컬 컴퓨터의 도메인이 가정됩니다.
  2. 다음으로 Kerberos 인증 패키지 및 요청 메시지를 사용하여 LsaCallAuthenticationPackage 함수를 호출합니다. 반환이 성공하면 KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE 반환됩니다.
    • 로컬 컴퓨터에서 DAC를 사용하지 않도록 설정한 경우 Flags 멤버가 KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE_FLAG_DAC_DISABLED.
    • 지정된 도메인에 FAST(유연한 인증 보안 터널링)가 사용하도록 설정된 경우 ExtendedPolicies 멤버는 KERB_EXTENDED_POLICY_FAST_CAPABLE(0x10000)로 설정됩니다.
    • 지정된 도메인에 클레임이 사용하도록 설정된 경우 ExtendedPolicies 멤버는 KERB_EXTENDED_POLICY_CLAIMS_CAPABLE(0x40000)로 설정됩니다.
    • 로컬 컴퓨터 도메인이 DAC를 사용하지 않도록 설정하지 않고 지정된 도메인에 FAST 또는 클레임이 사용하도록 설정된 경우 DsGetDcName 함수의 DsFlags 멤버가 DS_DIRECTORY_SERVICE_8_REQUIRED 설정됩니다. 그렇지 않으면 DsFlags는 0입니다.
    • 함수가 ProtocolStatus 멤버에서 오류를 반환하는 경우 STATUS_NOT_FOUND 로컬 컴퓨터에 지정된 도메인에 대한 신뢰가 없기 때문에 지정된 도메인을 쿼리할 수 없음을 나타냅니다. 다른 오류 코드는 실제 오류가 발생했음을 나타냅니다.
  3. 그런 다음 반환된 DsFlags가 사용자 고유의 요구 사항을 나타내는 플래그로 설정된 DsGetDcName을 호출해야 합니다. 이 플래그는 여러 개일 수 있으므로 논리 연산자 OR을 사용합니다. DomainControllerInfo 멤버가 반환됩니다.
  4. 마지막으로 Kerberos 인증 패키지 및 DcFlags 멤버가 DomainControllerInfo 플래그로 설정된 요청 KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST사용하여 LsaCallAuthenticationPackage 함수를 다시 호출합니다. 다른 모든 멤버는 KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST 동일한 방식으로 채워져야 합니다. KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSEDsFlags가 0이면 KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST 호출할 때 DcFlags를 0으로 설정하거나 기본값을 기존 KERB_ADD_BINDING_CACHE_ENTRY_REQUEST 요청으로 다시 설정해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2012 [데스크톱 앱만 해당]
머리글 ntsecapi.h

추가 정보

LsaCallAuthenticationPackage