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.
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.
- 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.
-
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.
- 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.
- 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 |