Share via


estrutura KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST (ntsecapi.h)

Permite que o usuário se associe a um CONTROLADOR de domínio específico (DC), substituindo o cache de associação de domínio Kerberos. O Kerberos impõe uma pesquisa de DC quando o DAC (Dynamic Controle de Acesso) está habilitado, portanto, normalmente, a autenticação não está associada a um DC específico. Alguns usuários podem querer associar ao DC específico no qual criaram uma conta ou definir uma nova senha para evitar o atraso de replicação de DC. Você deve ter o privilégio SeTcbPrivilege definido.

Sintaxe

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;

Membros

MessageType

Um valor da enumeração KERB_PROTOCOL_MESSAGE_TYPE que lista os tipos de mensagens que podem ser enviadas para o pacote de autenticação Kerberos chamando a função LsaCallAuthenticationPackage . Esse membro deve ser definido como KerbAddBindingCacheEntryExMessage.

RealmName

O nome do realm do controlador de domínio.

KdcAddress

O endereço do KDC (Centro de Distribuição de Chaves) do servidor ao qual você deseja associar.

AddressType

O tipo de cadeia de caracteres contido no membro KdcAddress . Esse pode ser um dos valores a seguir.

Valor Significado
DS_INET_ADDRESS
O endereço é um endereço IP de cadeia de caracteres do controlador de domínio, por exemplo, "\\157.55.94.74").
DS_NETBIOS_ADDRESS
O endereço é um nome NetBIOS do controlador de domínio, por exemplo, "\\phoenix".

DcFlags

O controlador de domínio sinaliza que o chamador fornece. Esses sinalizadores são necessários para passar para a função DsGetDcName .

Comentários

Para atender aos requisitos do usuário e aos requisitos do Kerberos, você precisa fazer duas chamadas para substituir o cache de associação de domínio Kerberos.

  1. Primeiro, você constrói um tipo de mensagem de solicitação de KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST no qual o membro MessageType deve ser definido como KerbQueryDomainExtendedPoliciesMessage. O membro DomainName é definido como o nome de domínio real para o qual as políticas de domínio estendidas são consultadas. Se DomainName estiver definido como nulo, o domínio do computador local será assumido.
  2. Em seguida, chame a função LsaCallAuthenticationPackage com o pacote de autenticação Kerberos e a mensagem de solicitação. Após o retorno bem-sucedido, KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE é retornado.
    • Se o computador local tiver desabilitado o DAC, o membro Flags será definido como KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE_FLAG_DAC_DISABLED.
    • Se o domínio especificado tiver o FAST (Túnel Seguro de Autenticação Flexível) habilitado, o membro ExtendedPolicies será definido como KERB_EXTENDED_POLICY_FAST_CAPABLE (0x10000).
    • Se o domínio especificado tiver Declarações habilitada, o membro ExtendedPolicies será definido como KERB_EXTENDED_POLICY_CLAIMS_CAPABLE (0x40000).
    • Se o domínio do computador local não desabilitar o DAC e o domínio especificado tiver FAST ou Claims habilitado, o membro DsFlags da função DsGetDcName será definido como DS_DIRECTORY_SERVICE_8_REQUIRED. Caso contrário, DsFlags será 0.
    • Se a função retornar uma falha no membro ProtocolStatus , STATUS_NOT_FOUND indicará que o domínio especificado não pode ser consultado porque o computador local não tem confiança no domínio especificado. Outros códigos de erro indicam a falha real encontrada.
  3. Em seguida, você deve chamar DsGetDcName com o DsFlags retornado definido com sinalizadores que representam seus próprios requisitos, que podem ser vários, portanto, use o operador lógico OR. O membro DomainControllerInfo é retornado.
  4. Por fim, você chama a função LsaCallAuthenticationPackage novamente com o pacote de autenticação Kerberos e a solicitação KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST em que o membro dcFlags é definido como os sinalizadores DomainControllerInfo . Todos os outros membros devem ser preenchidos da mesma forma que KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST. Se o DsFlags do KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE for zero, o DcFlags deverá ser definido como zero ao chamar KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST ou retornar à solicitação de KERB_ADD_BINDING_CACHE_ENTRY_REQUEST existente.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Cabeçalho ntsecapi.h

Confira também

LsaCallAuthenticationPackage