DsBindWithSpnExA 関数 (ntdsapi.h)
DsBindWithSpnEx 関数は、相互認証のために、指定された資格情報と特定のサービス プリンシパル名 (SPN) を使用してドメイン コントローラーにバインドします。 この関数は DsBindWithSpn 関数に似ていますが、この関数では BindFlags パラメーターを使用してバインド オプションを増やすことができます。
この関数は、相互認証に対して完全な制御が必要な場合に提供されます。 SPN はコンピューター固有であり、指定した SPN が DsBind が検索するサーバーと一致する可能性は低いため、 DsBind でサーバーを検索する必要がある場合は、この関数を使用しないでください。 NULLServicePrincipalName 引数を指定すると、DsBindWithCred と同じ動作になります。
構文
NTDSAPI_POSTXP DWORD DsBindWithSpnExA(
[in, optional] LPCSTR DomainControllerName,
[in, optional] LPCSTR DnsDomainName,
[in, optional] RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
[in, optional] LPCSTR ServicePrincipalName,
[in, optional] DWORD BindFlags,
[out] HANDLE *phDS
);
パラメーター
[in, optional] DomainControllerName
バインドするドメインの完全修飾 DNS 名を含む null で終わる文字列へのポインター。 詳細については、DsBind トピックの DomainControllerName の説明を参照してください。
[in, optional] DnsDomainName
バインドするドメインの完全修飾 DNS 名を含む null で終わる文字列へのポインター。 詳細については、DsBind トピックの DnsDomainName の説明を参照してください。
[in, optional] AuthIdentity
バインドに使用する資格情報を表す RPC_AUTH_IDENTITY_HANDLE 値が含まれます。 次に、
DsMakePasswordCredentials 関数を使用して、この値を取得します。 このパラメーターが NULL の場合は、呼び出し元スレッドの資格情報が使用されます。
DsFreePasswordCredentials 関数を使用してこのハンドルを解放する前に、DsUnBind を呼び出す必要があります。
[in, optional] ServicePrincipalName
クライアントに割り当てるサービス プリンシパル名を指定する null で終わる文字列へのポインター。 ServicePrincipalName で NULL を渡すことは、DsBindWithCred 関数の呼び出しと同じです。
[in, optional] BindFlags
この関数の動作を定義するフラグのセットが含まれています。 このパラメーターには、0 または次の一覧に示す値の組み合わせを含めることができます。
NTDSAPI_BIND_ALLOW_DELEGATION (1)
バインドでデリゲートの偽装レベルを使用します。 これにより、 DsAddSidHistory などの委任を必要とする操作を成功させることができます。 このフラグを指定すると、 DsBindWithSpnEx も DsBindWithSpn のように動作します。
このフラグが指定されていない場合、バインドでは偽装偽装レベルが使用されます。 詳細については、「 偽装レベル」を参照してください。
ほとんどの操作ではデリゲートの偽装レベルは必要ないため、このフラグは絶対に必要な場合にのみ指定する必要があります。 代理偽装レベルの不正なサーバーにバインドすると、不正なサーバーは資格情報を使用して非不正サーバーに接続し、意図しない操作を実行できます。
NTDSAPI_BIND_FIND_BINDING (2)
予約済み。
NTDSAPI_BIND_FORCE_KERBEROS (4)
Active Directory ライトウェイト ディレクトリ サービス: このフラグを指定すると、 DsBindWithSpnEx によって Kerberos 認証が強制的に使用されます。 Kerberos 認証を確立できない場合、 DsBindWithSpnEx は他の方法で認証を試みません。
[out] phDS
バインド ハンドルを受け取る HANDLE 値のアドレス。 このハンドルを閉じるには、 DsUnBind 関数に渡します。
戻り値
成功した場合 はERROR_SUCCESS 、それ以外の場合は Windows または RPC エラー コードを返します。 一般的なエラー コードの一覧を次に示します。
注釈
注意
ntdsapi.h ヘッダーは、DSBindWithSpnEx をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | ntdsapi.h |
Library | Ntdsapi.lib |
[DLL] | Ntdsapi.dll |