Поделиться через


структура KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST (ntsecapi.h)

Позволяет пользователю выполнять привязку к определенному контроллеру домена , переопределяя кэш привязки домена Kerberos. Kerberos применяет поиск контроллера домена, если включен динамический контроль доступа (DAC), поэтому обычно проверка подлинности не привязана к конкретному контроллеру домена. Некоторым пользователям может потребоваться выполнить привязку к конкретному контроллеру домена, на котором они создали учетную запись, или задать новый пароль, чтобы избежать задержки репликации контроллера домена. Необходимо задать привилегию 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

Значение перечисления KERB_PROTOCOL_MESSAGE_TYPE со списком типов сообщений, которые можно отправить в пакет проверки подлинности Kerberos путем вызова функции LsaCallAuthenticationPackage . Для этого элемента необходимо задать значение KerbAddBindingCacheEntryExMessage.

RealmName

Имя области контроллера домена.

KdcAddress

Адрес центра распространения ключей (KDC) сервера, к которому требуется выполнить привязку.

AddressType

Тип строки, содержащейся в элементе KdcAddress . Это может быть одно из следующих значений.

Значение Значение
DS_INET_ADDRESS
Адрес является строковым IP-адресом контроллера домена, например "\157.55.94.74").
DS_NETBIOS_ADDRESS
Адрес — это NetBIOS-имя контроллера домена, например \\phoenix.

DcFlags

Флаги контроллера домена, которые предоставляет вызывающий объект. Эти флаги необходимы для передачи в функцию DsGetDcName .

Комментарии

Чтобы удовлетворить требования пользователя и Kerberos, необходимо выполнить два вызова для переопределения кэша привязки домена Kerberos.

  1. Сначала необходимо создать тип сообщения запроса KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST , в котором члену MessageType необходимо задать значение KerbQueryDomainExtendedPoliciesMessage. Для элемента DomainName задано фактическое доменное имя, для которого запрашиваются расширенные политики домена. Если параметр DomainName имеет значение NULL, предполагается, что домен локального компьютера.
  2. Затем вызовите функцию LsaCallAuthenticationPackage с пакетом проверки подлинности Kerberos и сообщением запроса. После успешного возврата возвращается KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE .
    • Если локальный компьютер отключил приложение уровня данных, для элемента 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).
    • Если домен локального компьютера не отключает приложение уровня данных и в указанном домене включен параметр FAST или Claims, члену DsFlags функции DsGetDcName присваивается значение DS_DIRECTORY_SERVICE_8_REQUIRED. В противном случае Значение DsFlags равно 0.
    • Если функция возвращает ошибку в элементе ProtocolStatus , STATUS_NOT_FOUND указывает, что указанный домен не может быть запрошен, так как локальный компьютер не имеет доверия к указанному домену. Другие коды ошибок указывают на фактическую ошибку.
  3. Затем необходимо вызвать DsGetDcName с возвращенным параметром DsFlags с флагами, представляющими ваши собственные требования, которых может быть несколько, поэтому используйте логический оператор OR. Возвращается член DomainControllerInfo .
  4. Наконец, вы снова вызываете функцию LsaCallAuthenticationPackage с пакетом проверки подлинности Kerberos и KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST запроса, в котором члену DcFlags присвоены флаги DomainControllerInfo . Все остальные элементы должны быть заполнены так же, как и KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST. Если dsFlagsKERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE равно нулю, то при вызове KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST следует задать либо значение DcFlags, либо вернуться к существующему запросу KERB_ADD_BINDING_CACHE_ENTRY_REQUEST по умолчанию.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Верхняя часть ntsecapi.h

См. также раздел

LsaCallAuthenticationPackage