AcquireCredentialsHandleA 関数 (sspi.h)
AcquireCredentialsHandle (CredSSP) 関数は、セキュリティ プリンシパルの既存の資格情報へのハンドルを取得します。 このハンドルは、 InitializeSecurityContext (CredSSP) 関数と AcceptSecurityContext (CredSSP) 関数で 必要です。 これらは、ここでは説明されていないシステム ログオンによって確立される既存の 資格情報か、呼び出し元が代替資格情報を提供できます。
構文
SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA(
[in, optional] LPSTR pszPrincipal,
[in] LPSTR pszPackage,
[in] unsigned long fCredentialUse,
[in, optional] void *pvLogonId,
[in, optional] void *pAuthData,
[in, optional] SEC_GET_KEY_FN pGetKeyFn,
[in, optional] void *pvGetKeyArgument,
[out] PCredHandle phCredential,
[out, optional] PTimeStamp ptsExpiry
);
パラメーター
[in, optional] pszPrincipal
ハンドルが参照する資格情報を持つプリンシパルの名前を指定する null で終わる文字列へのポインター。
[in] pszPackage
これらの資格情報を使用する セキュリティ パッケージ の名前を指定する null で終わる文字列へのポインター。 これは、EnumerateSecurityPackages 関数によって返される SecPkgInfo 構造体の Name メンバーで返されるセキュリティ パッケージ名です。 コンテキストが確立されると、 QueryContextAttributes (CredSSP) を呼び出し、 ulAttribute を SECPKG_ATTR_PACKAGE_INFO に設定して、使用中のセキュリティ パッケージに関する情報を返すことができます。
[in] fCredentialUse
これらの資格情報の使用方法を示すフラグ。 このパラメーターには、次の値のいずれかを指定できます。
値 | 説明 |
---|---|
|
受信サーバーの資格情報を検証します。 InitializeSecurityContext (CredSSP) または AcceptSecurityContext (CredSSP) が呼び出されると、認証機関を使用して受信資格情報が検証される場合があります。 このような権限が使用できない場合、関数は失敗し、 SEC_E_NO_AUTHENTICATING_AUTHORITYを返します。 検証はパッケージ固有です。 |
|
ローカル クライアント資格情報で送信トークンを準備できるようにします。 |
[in, optional] pvLogonId
ユーザーを識別する ローカル一意識別子 (LUID) へのポインター。 このパラメーターは、ネットワーク リダイレクターなどのファイル システム プロセスに対して提供されます。 このパラメーターは、NULL でもかまいません。
[in, optional] pAuthData
Schannel パッケージと Negotiate パッケージの両方の認証データを指定する CREDSSP_CRED 構造体へのポインター。
[in, optional] pGetKeyFn
予約済み。 このパラメーターは使用されず、 NULL に設定する必要があります。
[in, optional] pvGetKeyArgument
予約済み。 このパラメーターは NULL に設定する必要があります。
[out] phCredential
資格情報ハンドルを受け取る CredHandle 構造体へのポインター。
[out, optional] ptsExpiry
返された資格情報の有効期限が切れる時刻を受け取る TimeStamp 構造体へのポインター。 受け取る構造体の値は、セキュリティ パッケージによって異なります。これは、ローカル時刻で値を指定する必要があります。
戻り値
関数が成功すると、 SEC_E_OKが返されます。
関数が失敗すると、次のいずれかのエラー コードが返されます。
リターン コード | 説明 |
---|---|
|
要求されたアクションを完了するために使用できるメモリが不足しています。 |
|
SSPI エラー コードにマップされないエラーが発生しました。 |
|
セキュリティ パッケージで使用できる資格情報はありません。 |
|
関数の呼び出し元には、必要な資格情報がありません。 |
|
要求されたセキュリティ パッケージが存在しません。 |
|
パッケージに指定された資格情報が認識されませんでした。 |
解説
AcquireCredentialsHandle (CredSSP) 関数は、特定のセキュリティ パッケージで使用される、ユーザーやクライアントなどのプリンシパルの資格情報へのハンドルを返します。 関数は、既存の資格情報または新しく作成された資格情報のいずれかにハンドルを返し、それを返すことができます。 このハンドルは、AcceptSecurityContext (CredSSP) 関数と InitializeSecurityContext (CredSSP) 関数の後続の呼び出しで使用できます。
一般 に、AcquireCredentialsHandle (CredSSP) は、同じコンピューターにログオンしている他のユーザーの資格情報を提供しません。 ただし、SE_TCB_NAME特権を持つ呼び出し元は、そのセッションのログオン識別子 (LUID) を指定することで、既存のログオン セッションの資格情報を取得できます。 通常、これは、ログオンしているユーザーの代わりに動作する必要があるカーネル モード モジュールで使用されます。
パッケージは、RPC ランタイム トランスポートによって提供される pGetKeyFn の関数を呼び出す場合があります。 トランスポートが資格情報を取得するためのコールバックの概念をサポートしていない場合、このパラメーターは NULL である必要があります。
カーネル モードの呼び出し元の場合は、次の相違点に注意する必要があります。
- 2 つの文字列パラメーターは Unicode 文字列である必要があります。
- バッファー値は、プールからではなく、プロセス仮想メモリに割り当てる必要があります。
注意
sspi.h ヘッダーは AcquireCredentialsHandle をエイリアスとして定義します。これは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | sspi.h (Security.h を含む) |
Library | Secur32.lib |
[DLL] | Secur32.dll |
関連項目
AcceptSecurityContext (CredSSP)