KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST structure (ntsecapi.h)
Permet à l’utilisateur de lier à un contrôleur de domaine spécifique, en remplaçant le cache de liaison de domaine Kerberos. Kerberos applique une recherche de contrôleur de domaine lorsque l’Access Control dynamique (DAC) est activée, de sorte que l’authentification n’est généralement pas liée à un contrôleur de domaine spécifique. Certains utilisateurs peuvent souhaiter établir une liaison au contrôleur de domaine spécifique sur lequel ils ont créé un compte ou définir un nouveau mot de passe pour éviter le retard de réplication du contrôleur de domaine. Vous devez disposer du privilège SeTcbPrivilege défini.
Syntaxe
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;
Membres
MessageType
Valeur de l’énumération KERB_PROTOCOL_MESSAGE_TYPE qui répertorie les types de messages qui peuvent être envoyés au package d’authentification Kerberos en appelant la fonction LsaCallAuthenticationPackage . Ce membre doit être défini sur KerbAddBindingCacheEntryExMessage.
RealmName
Nom du domaine du contrôleur de domaine.
KdcAddress
Adresse du centre de distribution de clés (KDC) du serveur auquel vous souhaitez établir une liaison.
AddressType
Type de chaîne contenu dans le membre KdcAddress . Il peut s’agir de l’une des valeurs suivantes.
DcFlags
Le contrôleur de domaine indique que l’appelant fournit. Ces indicateurs sont nécessaires pour passer à la fonction DsGetDcName .
Remarques
Pour répondre aux exigences de l’utilisateur et à Kerberos, vous devez effectuer deux appels pour remplacer le cache de liaison de domaine Kerberos.
- Tout d’abord, vous construisez un type de message de demande de KERB_QUERY_DOMAIN_EXTENDED_POLICIES_REQUEST dans lequel le membre MessageType doit être défini sur KerbQueryDomainExtendedPoliciesMessage. Le membre DomainName est défini sur le nom de domaine réel pour lequel les stratégies de domaine étendu sont interrogées. Si DomainName est défini sur null, le domaine de l’ordinateur local est supposé.
-
Ensuite, vous appelez la fonction LsaCallAuthenticationPackage avec le package d’authentification Kerberos et le message de demande. Une fois le retour réussi, KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE est retourné.
- Si l’ordinateur local a désactivé la DAC, le membre Indicateurs est défini sur KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE_FLAG_DAC_DISABLED.
- Si le domaine spécifié a fast (Flexible Authentication Secure Tunneling) activé, le membre ExtendedPolicies est défini sur KERB_EXTENDED_POLICY_FAST_CAPABLE (0x10000).
- Si les revendications sont activées dans le domaine spécifié, le membre ExtendedPolicies est défini sur KERB_EXTENDED_POLICY_CLAIMS_CAPABLE (0x40000).
- Si le domaine de l’ordinateur local ne désactive pas la DAC et que fast ou claims est activé dans le domaine spécifié, le membre DsFlags de la fonction DsGetDcName est défini sur DS_DIRECTORY_SERVICE_8_REQUIRED. Sinon, DsFlags est 0.
- Si la fonction retourne un échec dans le membre ProtocolStatus , STATUS_NOT_FOUND indique que le domaine spécifié ne peut pas être interrogé, car l’ordinateur local n’a pas confiance au domaine spécifié. D’autres codes d’erreur indiquent l’échec réel rencontré.
- Vous devez ensuite appeler DsGetDcName avec les DsFlags retournés définis avec des indicateurs qui représentent vos propres besoins, qui peuvent être plusieurs. Utilisez donc l’opérateur logique OR. Le membre DomainControllerInfo est retourné.
- Enfin, vous appelez à nouveau la fonction LsaCallAuthenticationPackage avec le package d’authentification Kerberos et la KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST de requête dans laquelle le membre DcFlags est défini sur les indicateurs DomainControllerInfo . Tous les autres membres doivent être renseignés de la même façon que KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST. Si le DsFlags de l’KERB_QUERY_DOMAIN_EXTENDED_POLICIES_RESPONSE est égal à zéro, dcFlags doit être défini sur zéro lors de l’appel de KERB_ADD_BINDING_CACHE_ENTRY_EX_REQUEST ou revenir par défaut à la demande de KERB_ADD_BINDING_CACHE_ENTRY_REQUEST existante.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau uniquement] |
En-tête | ntsecapi.h |