次の方法で共有


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 で終わる文字列へのポインター。

メモ ハンドルを要求するプロセスが資格情報にアクセスできない場合、関数はエラーを返します。 null 文字列は、セキュリティ コンテキストが実行されているユーザーの資格情報へのハンドル プロセスに必要であることを示します。
 

[in] pszPackage

これらの資格情報を使用する セキュリティ パッケージの名前を指定する null で終わる文字列へのポインター。 これは、EnumerateSecurityPackages 関数によって返される SecPkgInfo 構造体の Name メンバーで返されるセキュリティ パッケージ名です。 コンテキストが確立されると、QueryContextAttributes (CredSSP) を呼び出し、ulAttribute 使用しているセキュリティ パッケージに関する情報を返 SECPKG_ATTR_PACKAGE_INFO に設定できます。

[in] fCredentialUse

これらの資格情報の使用方法を示すフラグ。 このパラメーターには、次のいずれかの値を指定できます。

価値 意味
SECPKG_CRED_INBOUND
0x1
受信サーバーの資格情報を検証します。 InitializeSecurityContext (CredSSP) または AcceptSecurityContext (CredSSP) 呼び出されたときに、認証機関を使用して受信資格情報を検証できます。 このような権限を使用できない場合、関数は失敗し、SEC_E_NO_AUTHENTICATING_AUTHORITYを返します。 検証はパッケージ固有です。
SECPKG_CRED_OUTBOUND
0x2
ローカル クライアントの資格情報で送信トークンを準備できるようにします。

[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を返します。

関数が失敗すると、次のいずれかのエラー コードが返されます。

リターン コード 形容
SEC_E_INSUFFICIENT_MEMORY
要求されたアクションを完了するために使用できるメモリが不足しています。
SEC_E_INTERNAL_ERROR
SSPI エラー コードにマップされていないエラーが発生しました。
SEC_E_NO_CREDENTIALS
セキュリティ パッケージのでは、資格情報を使用できません。
SEC_E_NOT_OWNER
関数の呼び出し元には、必要な資格情報がありません。
SEC_E_SECPKG_NOT_FOUND
要求されたセキュリティ パッケージが存在しません。
SEC_E_UNKNOWN_CREDENTIALS
パッケージに指定された資格情報が認識されませんでした。

備考

AcquireCredentialsHandle (CredSSP) 関数は、特定の セキュリティ パッケージによって使用される、ユーザーやクライアントなどのプリンシパルの資格情報へのハンドルを返します。 この関数は、既存の資格情報または新しく作成された資格情報のいずれかにハンドルを返して返すことができます。 このハンドルは、AcceptSecurityContext (CredSSP) および InitializeSecurityContext (CredSSP) 関数 後続の呼び出しで使用できます。

一般に、AcquireCredentialsHandle (CredSSP) 、同じコンピューターにログオンしている他のユーザーの資格情報は提供されません。 ただし、SE_TCB_NAME 特権 を持つ呼び出し元は、そのセッションの ログオン ID (LUID) を指定することで、既存のログオン セッションの 資格情報 を取得できます。 通常、これは、ログオンしているユーザーの代わりに動作する必要があるカーネル モード モジュールによって使用されます。

パッケージは、RPC ランタイム トランスポートによって提供される pGetKeyFn 関数を呼び出す場合があります。 トランスポートが資格情報を取得するためのコールバックの概念をサポートしていない場合、このパラメーターは NULLする必要があります。

カーネル モードの呼び出し元の場合は、次の相違点に注意する必要があります。

  • 2 つの文字列パラメーターは、Unicode 文字列 する必要があります。
  • バッファー値は、プールからではなく、プロセス仮想メモリに割り当てる必要があります。
返された資格情報の使用が完了したら、FreeCredentialsHandle 関数を呼び出して、資格情報で使用されるメモリを解放します。

手記

sspi.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして AcquireCredentialsHandle を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows Vista [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2008 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー sspi.h (Security.h を含む)
ライブラリ Secur32.lib
DLL Secur32.dll

関連項目

AcceptSecurityContext (CredSSP)

FreeCredentialsHandle

InitializeSecurityContext (CredSSP) の

SSPI 関数の