次の方法で共有


ldap_bind_s関数 (winldap.h)

ldap_bind_s関数は、LDAP サーバーに対してクライアントを同期的に認証します。

構文

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

パラメーター

[in] ld

セッション ハンドル。

[in] dn

バインドに使用されるエントリの識別名を含む null で終わる文字列へのポインター。 DN、UPN、WinNT スタイルのユーザー名、またはディレクトリ サーバーが識別子として受け入れるその他の名前を指定できます。

[in] cred

認証に使用する資格情報を含む null で終わる文字列へのポインター。 このパラメーターを使用して、任意の資格情報を渡すことができます。 資格情報の形式と内容は、 メソッド パラメーターの設定によって異なります。 詳細については、「解説」を参照してください。

[in] method

使用する認証方法を示します。 有効な非同期認証方法の詳細と一覧については、「解説」セクションを参照してください。 有効な非同期認証方法の詳細と説明については、「 ldap_bind」を参照してください。

戻り値

関数が成功した場合、戻り値は LDAP_SUCCESS

関数が失敗した場合はエラー コードを返します。 詳細については、「 戻り値」を参照してください。

注釈

Windows Server 2008 および Windows Vista でのユーザー アカウント制御の導入は、LDAP での変更や追加に関して非常に重要な結果をもたらします。 UAC 管理者トークンが制限され、 NULL 資格情報を使用してユーザーが DC にログオンした場合、ディレクトリへの変更または追加、またはスキーマ変更操作は失敗します。 これには、DirSync 検索、SecurityDescriptorFlags の使用時にオブジェクトの ntSecurityDescriptor 属性から SACL を取得すること、およびその他の多くの操作が含まれます。

これらはすべて不十分なアクセス権で失敗します。

管理者が DC にログオンするときにユーザー アカウント制御が有効な場合、管理者はログオン セッションで制限付きトークンを取得します。 その後、NULL 資格情報でldap_bind_sを使用すると、変更または追加を行う操作は失敗します。

ldap_bind_sの実装では、次の表に示す認証方法がサポートされています。 LDAP_AUTH_SIMPLE オプションを使用して ldap_bind_s を呼び出すことは、 ldap_simple_bind_sを呼び出すことと同じです。

メソッド 説明 資格情報
LDAP_AUTH_SIMPLE プレーンテキスト パスワードを使用した認証。 ユーザー パスワードを含む文字列。
LDAP_AUTH_DIGEST ダイジェスト認証パッケージ。 現在のユーザーとしてログインするには、 dn パラメーターと cred パラメーターを NULL に設定 します。 別のユーザーとしてログインするには、 dn パラメーターを NULL に設定し、 cred パラメーターを適切なユーザー名、ドメイン名、パスワードを持つ SEC_WINNT_AUTH_IDENTITY 構造体へのポインターに設定します。
LDAP_AUTH_DPA 分散パスワード認証。 Microsoft メンバーシップ システムによって使用されます。 現在のユーザーとしてログインするには、 dn パラメーターと cred パラメーターを NULL に設定 します。 別のユーザーとしてログインするには、 dn パラメーターを NULL に設定し、 cred パラメーターを適切なユーザー名、ドメイン名、パスワードを持つ SEC_WINNT_AUTH_IDENTITY 構造体へのポインターに設定します。
LDAP_AUTH_MSN Microsoft ネットワーク認証サービス。 現在のユーザーとしてログインするには、 dn パラメーターと cred パラメーターを NULL に設定 します。 別のユーザーとしてログインするには、 dn パラメーターを NULL に設定し、 cred パラメーターを適切なユーザー名、ドメイン名、パスワードを持つ SEC_WINNT_AUTH_IDENTITY 構造体へのポインターに設定します。
LDAP_AUTH_NEGOTIATE 汎用セキュリティ サービス (GSS) (Snego)。 認証は提供しませんが、代わりに使用可能なサービスの一覧から最も適切な認証方法を選択し、すべての認証データをそのサービスに渡します。 現在のユーザーとしてログインするには、 dn パラメーターと cred パラメーターを NULL に設定 します。 別のユーザーとしてログインするには、 dn パラメーターを NULL に設定し、 cred パラメーターを適切なユーザー名、ドメイン名、パスワードを持つ SEC_WINNT_AUTH_IDENTITY または SEC_WINNT_AUTH_IDENTITY_EX 構造体へのポインターに設定します。
LDAP_AUTH_NTLM NT LAN マネージャー 現在のユーザーとしてログインするには、 dn パラメーターと cred パラメーターを NULL に設定 します。 別のユーザーとしてログインするには、 dn パラメーターを NULL に設定し、 cred パラメーターを適切なユーザー名、ドメイン名、パスワードを持つ SEC_WINNT_AUTH_IDENTITY または SEC_WINNT_AUTH_IDENTITY_EX 構造体へのポインターに設定します。
LDAP_AUTH_SICILY MSN サーバーへのパッケージ ネゴシエーションについて説明します。 現在のユーザーとしてログインするには、 dn パラメーターと cred パラメーターを NULL に設定 します。 別のユーザーとしてログインするには、 dn パラメーターを NULL に設定し、 cred パラメーターを適切なユーザー名、ドメイン名、パスワードを持つ SEC_WINNT_AUTH_IDENTITY 構造体へのポインターに設定します。
LDAP_AUTH_SSPI 互換性のために残されています。 下位互換性のために含まれています。 この定数を使用すると、GSS (Snego) ネゴシエーション サービスが選択されます。 LDAP_AUTH_NEGOTIATEと同じです。
 

非同期バインド認証の場合は、ldap_bindでLDAP_AUTH_SIMPLE使用します。

バインド操作では、識別名と何らかの種類の認証資格情報 (パスワードなど) を指定して、クライアントをディレクトリ サーバーに識別します。 正確な資格情報は、使用される認証方法によって異なります。 ldap_bind_s() (非単純) の資格情報に NULL を渡すと、現在のユーザーまたはサービスの資格情報が使用されます。 ( ldap_simple_bind_sのように) 単純なバインド メソッドが指定されている場合、 NULL プレーンテキスト パスワードと同じです。 詳細については、「 ldap_bind」を参照してください。

LDAP 2 サーバーでは、認証を必要とする他の操作を試行する前に、アプリケーションをバインドする必要があることに注意してください。

マルチスレッド: バインド呼び出しは接続全体に適用されるため、安全ではありません。 スレッドが接続を共有し、バインド操作を他の操作とスレッド化しようとする場合は注意が必要です。

メモ Microsoft LDAP クライアントは、バインド/応答ラウンドトリップごとに 120 秒 (2 分) の既定のタイムアウト値を使用します。 このタイムアウト値は、 LDAP_OPT_TIMELIMIT セッション オプションを使用して変更できます。 ldap_set_optionを使用して指定しない限り、他の操作にはタイムアウトはありません。
 
セッション ハンドルに対するすべての操作が完了したら、 LDAP セッション ハンドルを ldap_unbind 関数に渡すことによって、セッションを終了する必要があります。 また、 ldap_bind_s 呼び出しが失敗した場合は、エラーの回復が不要になったときに 、ldap_unbind の呼び出しでセッション ハンドルを解放する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
対象プラットフォーム Windows
ヘッダー winldap.h
Library Wldap32.lib
[DLL] Wldap32.dll

こちらもご覧ください

LDAP セッションの確立

関数

戻り値

SEC_WINNT_AUTH_IDENTITY

ldap_bind

ldap_simple_bind_s

ldap_unbind