Partager via


fonction ldap_bind_s (winldap.h)

La fonction ldap_bind_s authentifie de manière synchrone un client auprès du serveur LDAP.

Syntaxe

WINLDAPAPI ULONG LDAPAPI ldap_bind_s(
  [in] LDAP        *ld,
  [in] const PSTR  dn,
  [in] const PCHAR cred,
  [in] ULONG       method
);

Paramètres

[in] ld

Handle de session.

[in] dn

Pointeur vers une chaîne terminée par null qui contient le nom unique de l’entrée utilisée pour la liaison. Il peut s’agir d’un nom DN, d’un UPN, d’un nom d’utilisateur de style WinNT ou d’un autre nom que le serveur d’annuaire acceptera comme identificateur.

[in] cred

Pointeur vers une chaîne terminée par null qui contient les informations d’identification avec lesquelles s’authentifier. Les informations d’identification arbitraires peuvent être transmises à l’aide de ce paramètre. Le format et le contenu des informations d’identification dépendent du paramètre de méthode . Pour plus d'informations, consultez la section Notes.

[in] method

Indique la méthode d’authentification à utiliser. Pour plus d’informations et une liste des méthodes d’authentification asynchrones valides, consultez la section Remarques. Pour plus d’informations et une description de la méthode d’authentification asynchrone valide, consultez ldap_bind.

Valeur retournée

Si la fonction réussit, la valeur de retour est LDAP_SUCCESS.

Si la fonction échoue, elle retourne un code d'erreur. Pour plus d’informations, consultez Valeurs de retour.

Remarques

L’introduction du contrôle de compte d’utilisateur dans Windows Server 2008 et Windows Vista a une conséquence très importante en ce qui concerne l’apport de modifications ou d’ajouts dans LDAP. Lorsqu’un utilisateur est connecté à un contrôleur de domaine avec un jeton administrateur UAC restreint et à l’aide d’informations d’identification NULL , toute modification ou ajout au répertoire, ou toute opération de modification de schéma, échoue. Cela inclut les recherches DirSync, la récupération de la liste SACL à partir de l’attribut ntSecurityDescriptor d’un objet lors de l’utilisation de SecurityDescriptorFlags et de nombreuses autres opérations.

Toutes ces opérations échouent avec des droits d’accès insuffisants.

Si le contrôle de compte d’utilisateur est en vigueur lorsqu’un administrateur se connecte à un contrôleur de domaine, l’administrateur obtient un jeton restreint dans la session d’ouverture de session. S’il utilise ensuite ldap_bind_s avec des informations d’identification NULL , les opérations qui apportent des modifications ou des ajouts échouent.

L’implémentation de ldap_bind_s prend en charge les méthodes d’authentification répertoriées dans le tableau suivant. Appeler ldap_bind_s avec l’option LDAP_AUTH_SIMPLE équivaut à appeler ldap_simple_bind_s.

Méthode Description Informations d'identification
LDAP_AUTH_SIMPLE Authentification avec un mot de passe en texte clair. Chaîne qui contient le mot de passe utilisateur.
LDAP_AUTH_DIGEST Package d’authentification Digest. Pour vous connecter en tant qu’utilisateur actuel, définissez les paramètres dn et cred sur NULL. Pour vous connecter en tant qu’autre utilisateur, définissez le paramètre dn sur NULL et le paramètre cred sur un pointeur vers une structure de SEC_WINNT_AUTH_IDENTITY avec le nom d’utilisateur, le nom de domaine et le mot de passe appropriés.
LDAP_AUTH_DPA Authentification par mot de passe distribué. Utilisé par le système d’appartenance Microsoft. Pour vous connecter en tant qu’utilisateur actuel, définissez les paramètres dn et cred sur NULL. Pour vous connecter en tant qu’autre utilisateur, définissez le paramètre dn sur NULL et le paramètre cred sur un pointeur vers une structure de SEC_WINNT_AUTH_IDENTITY avec le nom d’utilisateur, le nom de domaine et le mot de passe appropriés.
LDAP_AUTH_MSN Service d’authentification réseau Microsoft. Pour vous connecter en tant qu’utilisateur actuel, définissez les paramètres dn et cred sur NULL. Pour vous connecter en tant qu’autre utilisateur, définissez le paramètre dn sur NULL et le paramètre cred sur un pointeur vers une structure de SEC_WINNT_AUTH_IDENTITY avec le nom d’utilisateur, le nom de domaine et le mot de passe appropriés.
LDAP_AUTH_NEGOTIATE Services de sécurité génériques (GSS) (Snego). Ne fournit pas d’authentification, mais choisit plutôt la méthode d’authentification la plus appropriée dans une liste de services disponibles et transmet toutes les données d’authentification à ce service. Pour vous connecter en tant qu’utilisateur actuel, définissez les paramètres dn et cred sur NULL. Pour vous connecter en tant qu’autre utilisateur, définissez le paramètre dn sur NULL et le paramètre cred sur un pointeur vers une structure SEC_WINNT_AUTH_IDENTITY ou SEC_WINNT_AUTH_IDENTITY_EX avec le nom d’utilisateur, le nom de domaine et le mot de passe appropriés.
LDAP_AUTH_NTLM Gestionnaire NT LAN Pour vous connecter en tant qu’utilisateur actuel, définissez les paramètres dn et cred sur NULL. Pour vous connecter en tant qu’autre utilisateur, définissez le paramètre dn sur NULL et le paramètre cred sur un pointeur vers une structure SEC_WINNT_AUTH_IDENTITY ou SEC_WINNT_AUTH_IDENTITY_EX avec le nom d’utilisateur, le nom de domaine et le mot de passe appropriés.
LDAP_AUTH_SICILY Couvre la négociation de package sur les serveurs MSN. Pour vous connecter en tant qu’utilisateur actuel, définissez les paramètres dn et cred sur NULL. Pour vous connecter en tant qu’autre utilisateur, définissez le paramètre dn sur NULL et le paramètre cred sur un pointeur vers une structure de SEC_WINNT_AUTH_IDENTITY avec le nom d’utilisateur, le nom de domaine et le mot de passe appropriés.
LDAP_AUTH_SSPI Obsolète. Inclus pour la compatibilité descendante. L’utilisation de cette constante sélectionne le service de négociation GSS (Snego). Identique à LDAP_AUTH_NEGOTIATE.
 

Pour l’authentification de liaison asynchrone, utilisez LDAP_AUTH_SIMPLE avec ldap_bind.

L’opération de liaison identifie un client au serveur d’annuaire en fournissant un nom unique et un type d’informations d’identification d’authentification, comme un mot de passe. Les informations d’identification exactes dépendent de la méthode d’authentification utilisée. Si vous transmettez null pour les informations d’identification avec ldap_bind_s() (non simple), les informations d’identification actuelles de l’utilisateur ou du service seront utilisées. Si une méthode de liaison simple (comme dans ldap_simple_bind_s) est spécifiée, elle équivaut à un mot de passe en texte clair NULL. Pour plus d’informations, consultez ldap_bind.

N’oubliez pas que les serveurs LDAP 2 nécessitent une liaison d’application avant d’essayer d’autres opérations qui nécessitent une authentification.

Multithreading : les appels de liaison ne sont pas sécurisés, car ils s’appliquent à la connexion dans son ensemble. Soyez prudent si les threads partagent des connexions et essaient de threader les opérations de liaison avec d’autres opérations.

Note Le client LDAP Microsoft utilise une valeur de délai d’expiration par défaut de 120 secondes (2 minutes) pour chaque aller-retour de liaison-réponse. Cette valeur de délai d’expiration peut être modifiée à l’aide de l’option LDAP_OPT_TIMELIMIT session. Les autres opérations n’ont pas de délai d’expiration, sauf si elles sont spécifiées à l’aide de ldap_set_option.
 
Lorsque toutes les opérations sur le handle de session sont terminées, la session doit être arrêtée en passant le handle de session LDAP à la fonction ldap_unbind . En outre, si l’appel ldap_bind_s échoue, le handle de session doit être libéré avec un appel à ldap_unbind lorsqu’il n’est plus nécessaire pour la récupération d’erreur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête winldap.h
Bibliothèque Wldap32.lib
DLL Wldap32.dll

Voir aussi

Établissement d’une session LDAP

Fonctions

Valeurs retournées

SEC_WINNT_AUTH_IDENTITY

ldap_bind

ldap_simple_bind_s

ldap_unbind