Freigeben über


ldap_bind_s-Funktion (winldap.h)

Die ldap_bind_s-Funktion authentifiziert einen Client synchron beim LDAP-Server.

Syntax

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

Parameter

[in] ld

Das Sitzungshandle.

[in] dn

Zeiger auf eine NULL-endende Zeichenfolge, die den distinguished Name des zum Binden verwendeten Eintrags enthält. Dies kann ein DN, ein UPN, ein Benutzername im WinNT-Stil oder ein anderer Name sein, den der Verzeichnisserver als Bezeichner akzeptiert.

[in] cred

Zeiger auf eine NULL-endende Zeichenfolge, die die Anmeldeinformationen für die Authentifizierung enthält. Mit diesem Parameter können beliebige Anmeldeinformationen übergeben werden. Format und Inhalt der Anmeldeinformationen hängen von der Einstellung des Methodenparameters ab. Weitere Informationen finden Sie in den Hinweisen.

[in] method

Gibt die zu verwendende Authentifizierungsmethode an. Weitere Informationen und eine Liste der gültigen asynchronen Authentifizierungsmethoden finden Sie im Abschnitt Hinweise. Weitere Informationen und eine Beschreibung der gültigen asynchronen Authentifizierungsmethode finden Sie unter ldap_bind.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert LDAP_SUCCESS.

Wenn die Ausführung der Funktion fehlschlägt, wird ein Fehlercode zurückgegeben. Weitere Informationen finden Sie unter Rückgabewerte.

Hinweise

Die Einführung der Benutzerkontensteuerung in Windows Server 2008 und Windows Vista hat eine sehr wichtige Folge im Hinblick auf Änderungen oder Ergänzungen in LDAP. Wenn ein Benutzer mit einem eingeschränkten UAC-Administratortoken bei einem DC angemeldet ist und NULL-Anmeldeinformationen verwendet, schlägt jede Änderung oder Ergänzung des Verzeichnisses oder jeder Schemaänderungsvorgang fehl. Dazu gehören DirSync-Suchvorgänge, das Abrufen der SACL aus dem ntSecurityDescriptor-Attribut eines Objekts bei Verwendung von SecurityDescriptorFlags und viele andere Vorgänge.

All dies schlägt mit unzureichenden Zugriffsrechten fehl.

Wenn die Benutzerkontensteuerung aktiviert ist, wenn sich ein Administrator bei einem DC anmeldet, erhält der Administrator in der Anmeldesitzung ein eingeschränktes Token. Wenn er dann ldap_bind_s mit NULL-Anmeldeinformationen verwendet, schlagen Vorgänge, die Änderungen oder Ergänzungen vornehmen, fehl.

Die Implementierung von ldap_bind_s unterstützt die in der folgenden Tabelle aufgeführten Authentifizierungsmethoden. Das Aufrufen ldap_bind_s mit der Option LDAP_AUTH_SIMPLE entspricht dem Aufrufen ldap_simple_bind_s.

Methode BESCHREIBUNG Anmeldeinformationen
LDAP_AUTH_SIMPLE Authentifizierung mit einem Klartextkennwort. Eine Zeichenfolge, die das Benutzerkennwort enthält.
LDAP_AUTH_DIGEST Digestauthentifizierungspaket. Um sich als aktueller Benutzer anzumelden, legen Sie die Parameter dn und cred auf NULL fest. Um sich als anderer Benutzer anzumelden, legen Sie den dn-Parameter auf NULL und den cred-Parameter auf einen Zeiger auf eine SEC_WINNT_AUTH_IDENTITY-Struktur mit dem entsprechenden Benutzernamen, Domänennamen und Kennwort fest.
LDAP_AUTH_DPA Verteilte Kennwortauthentifizierung. Wird vom Microsoft-Mitgliedschaftssystem verwendet. Um sich als aktueller Benutzer anzumelden, legen Sie die Parameter dn und cred auf NULL fest. Um sich als anderer Benutzer anzumelden, legen Sie den dn-Parameter auf NULL und den cred-Parameter auf einen Zeiger auf eine SEC_WINNT_AUTH_IDENTITY-Struktur mit dem entsprechenden Benutzernamen, Domänennamen und Kennwort fest.
LDAP_AUTH_MSN Microsoft-Netzwerkauthentifizierungsdienst. Um sich als aktueller Benutzer anzumelden, legen Sie die Parameter dn und cred auf NULL fest. Um sich als anderer Benutzer anzumelden, legen Sie den dn-Parameter auf NULL und den cred-Parameter auf einen Zeiger auf eine SEC_WINNT_AUTH_IDENTITY-Struktur mit dem entsprechenden Benutzernamen, Domänennamen und Kennwort fest.
LDAP_AUTH_NEGOTIATE Generische Sicherheitsdienste (GSS) (Snego). Stellt keine Authentifizierung bereit, sondern wählt stattdessen die am besten geeignete Authentifizierungsmethode aus einer Liste der verfügbaren Dienste aus und übergibt alle Authentifizierungsdaten an diesen Dienst. Um sich als aktueller Benutzer anzumelden, legen Sie die Parameter dn und cred auf NULL fest. Um sich als anderer Benutzer anzumelden, legen Sie den dn-Parameter auf NULL und den cred-Parameter auf einen Zeiger auf eine SEC_WINNT_AUTH_IDENTITY - oder SEC_WINNT_AUTH_IDENTITY_EX-Struktur mit dem entsprechenden Benutzernamen, Domänennamen und Kennwort fest.
LDAP_AUTH_NTLM NT LAN-Manager Um sich als aktueller Benutzer anzumelden, legen Sie die Parameter dn und cred auf NULL fest. Um sich als anderer Benutzer anzumelden, legen Sie den dn-Parameter auf NULL und den cred-Parameter auf einen Zeiger auf eine SEC_WINNT_AUTH_IDENTITY - oder SEC_WINNT_AUTH_IDENTITY_EX-Struktur mit dem entsprechenden Benutzernamen, Domänennamen und Kennwort fest.
LDAP_AUTH_SICILY Behandelt die Paketaushandlung mit MSN-Servern. Um sich als aktueller Benutzer anzumelden, legen Sie die Parameter dn und cred auf NULL fest. Um sich als anderer Benutzer anzumelden, legen Sie den dn-Parameter auf NULL und den cred-Parameter auf einen Zeiger auf eine SEC_WINNT_AUTH_IDENTITY-Struktur mit dem entsprechenden Benutzernamen, Domänennamen und Kennwort fest.
LDAP_AUTH_SSPI Veraltet. Aus Gründen der Abwärtskompatibilität enthalten. Mit dieser Konstanten wird der GSS-Aushandlungsdienst (Snego) ausgewählt. Identisch mit LDAP_AUTH_NEGOTIATE.
 

Verwenden Sie für die asynchrone Bindungsauthentifizierung LDAP_AUTH_SIMPLE mit ldap_bind.

Der Bindungsvorgang identifiziert einen Client an den Verzeichnisserver, indem ein distinguished Name und eine Art von Authentifizierungsanmeldeinformationen, z. B. ein Kennwort, angegeben wird. Die genauen Anmeldeinformationen hängen von der verwendeten Authentifizierungsmethode ab. Wenn Sie NULL für die Anmeldeinformationen mit ldap_bind_s() (nicht einfach) übergeben, werden die aktuellen Benutzer- oder Dienstanmeldeinformationen verwendet. Wenn eine einfache Bindungsmethode (wie in ldap_simple_bind_s) angegeben wird, entspricht sie einem NULL-Klartextkennwort. Weitere Informationen finden Sie unter ldap_bind.

Beachten Sie, dass LDAP 2-Server eine Bindung einer Anwendung erfordern, bevor Sie versuchen, andere Vorgänge auszuführen, die eine Authentifizierung erfordern.

Multithreading: Bindungsaufrufe sind unsicher, da sie für die gesamte Verbindung gelten. Gehen Sie vorsichtig vor, wenn Threads Verbindungen gemeinsam nutzen und versuchen, die Bindungsvorgänge mit anderen Vorgängen zu threaden.

Hinweis Der Microsoft LDAP-Client verwendet für jeden Bindungsantwort-Roundtrip einen Standardtimeoutwert von 120 Sekunden (2 Minuten). Dieser Timeoutwert kann mithilfe der Option LDAP_OPT_TIMELIMIT Sitzung geändert werden. Andere Vorgänge weisen kein Timeout auf, es sei denn, dies wird mithilfe von ldap_set_option angegeben.
 
Wenn alle Vorgänge für das Sitzungshandle abgeschlossen sind, muss die Sitzung beendet werden, indem das LDAP-Sitzungshandle an die ldap_unbind-Funktion übergeben wird. Wenn der ldap_bind_s Aufruf fehlschlägt, sollte das Sitzungshandle außerdem mit einem Aufruf von ldap_unbind freigegeben werden, wenn es für die Fehlerwiederherstellung nicht mehr erforderlich ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile winldap.h
Bibliothek Wldap32.lib
DLL Wldap32.dll

Weitere Informationen

Einrichten einer LDAP-Sitzung

Funktionen

Rückgabewerte

SEC_WINNT_AUTH_IDENTITY

ldap_bind

ldap_simple_bind_s

ldap_unbind