SspiAcceptSecurityContextAsync 関数 (sspi.h)
手記
この関数は、AcceptSecurityContext 関数に対応する非同期関数として機能します。
構文
SECURITY_STATUS SspiAcceptSecurityContextAsync(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSecBufferDesc pInput,
unsigned long fContextReq,
unsigned long TargetDataRep,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
パラメーター
AsyncContext
非同期呼び出しコンテキスト。
phCredential
サーバー資格情報へのハンドル。 このハンドルを取得するために、サーバーは SECPKG_CRED_INBOUND または SECPKG_CRED_BOTH フラグを設定して SspiAcquireCredentialsHandleAsync 関数を呼び出します。
phContext
CtxtHandle 構造体へのポインター。 SspiAcceptSecurityContextAsync
pInput
SspiInitializeSecurityContextAsyncへのクライアント呼び出しによって生成された
最初のバッファーは SECBUFFER_TOKEN 型で、クライアントから受信したセキュリティ トークンを含む必要があります。 2 番目のバッファーは、SECBUFFER_EMPTY型である必要があります。
fContextReq
コンテキストを確立するためにサーバーで必要な属性を指定するビット フラグ。
パラメーター値 完全な一覧については、「AcceptSecurityContext: fContextReq」を参照してください。
TargetDataRep
ターゲット上のバイト順序などのデータ表現。 このパラメーターには、SECURITY_NATIVE_DREP または SECURITY_NETWORK_DREPを指定できます。
phNewContext
CtxtHandle 構造体へのポインター。 SspiAcceptSecurityContextAsync
pOutput
出力バッファー記述子を含む SecBufferDesc 構造体へのポインター。 このバッファーは、SspiInitializeSecurityContextAsyncへの追加の呼び出しへの入力のためにクライアントに送信されます。 関数がSEC_E_OKを返した場合でも、出力バッファーが生成される場合があります。 生成されたバッファーは、クライアント アプリケーションに返送する必要があります。
出力時に、このバッファーは非同期セキュリティ コンテキストのトークンを受け取ります。 トークンはクライアントに送信する必要があります。 この関数は、SECBUFFER_EXTRA型のバッファーを返すこともできます。
pfContextAttr
確立されたコンテキストの属性を示すビット フラグのセットへのポインター。
属性 説明については、「AcceptSecurityContext: pfContextAttr」を参照してください。
ptsExpiry
コンテキストの有効期限を受け取る TimeStamp 構造体へのポインター。
AcceptSecurityContext: ptsExpiry
戻り値
セキュリティ コンテキストを確立するための非同期要求が正常に実行キューに登録された場合に SEC_E_OK を返します。 それ以外の場合は、キューに入ろうとして生成されたエラーを返します。 操作の状態を取得するには、SspiGetAsyncCallStatusを使用します。
クライアントから受信したセキュリティ コンテキストが受け入れられた場合、SspiGetAsyncCallStatus は SEC_E_OK または次の表のいずれかの SSPI コードを返します。 それ以外の場合は、呼び出しがまだ進行中の場合、または次の 2 番目の表のいずれかの致命的なエラー コードが SEC_I_ASYNC_CALL_PENDING 返される可能性があります。
リターン コード |
形容 |
---|---|
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
関数は成功しました。 入力バッファー内のデータが不完全です。 アプリケーションは、クライアントから追加のデータを読み取り、SspiAcceptSecurityContextAsync をもう一度呼び出す必要があります。 |
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
関数は成功しました。 サーバーは CompleteAuthToken |
SEC_I_COMPLETE_NEEDED 0x00090313L |
関数は成功しました。 CompleteAuthTokenを呼び出す前に、サーバーがクライアントからのメッセージ |
SEC_I_CONTINUE_NEEDED 0x00090312L |
関数は成功しました。 サーバーは、出力トークンをクライアントに送信し、返されたトークンを待機する必要があります。 返されたトークンは、SspiAcceptSecurityContextAsync への別の呼び出し pInput で渡す必要があります。 |
致命的なエラー コード
リターン コード |
形容 |
---|---|
SEC_E_INSUFFICIENT_MEMORY 0x80090300L |
関数が失敗しました。 要求されたアクションを完了するのに十分なメモリがありません。 |
SEC_E_INTERNAL_ERROR 0x80090304L |
関数が失敗しました。 SSPI エラー コードにマップされていないエラーが発生しました。 |
SEC_E_INVALID_HANDLE 0x80100003L |
関数が失敗しました。 関数に渡されたハンドルが無効です。 |
SEC_E_INVALID_TOKEN 0x80090308L |
関数が失敗しました。 関数に渡されたトークンが無効です。 |
SEC_E_LOGON_DENIED 0x8009030CL |
ログオンに失敗しました。 |
SEC_E_NO_AUTHENTICATING_AUTHORITY 0x80090311L |
関数が失敗しました。 認証用の機関に接続できませんでした。 これは、次の条件が原因である可能性があります。
|
SEC_E_NO_CREDENTIALS 0x8009030EL |
関数が失敗しました。 phCredential パラメーターで指定された 資格情報 ハンドルが無効です。 |
SEC_E_UNSUPPORTED_FUNCTION 0x80090302L |
関数が失敗しました。 fContextReq パラメーターは、無効なコンテキスト属性フラグ (ASC_REQ_DELEGATEまたはASC_REQ_PROMPT_FOR_CREDS) を指定しました。 |
備考
SspiAcceptSecurityContextAsync 関数は、SspiInitializeSecurityContextAsync 関数に対応するサーバーです。
呼び出し元は、最終的なコンテキスト属性で十分かどうかを判断します。 たとえば、機密性 (暗号化) が要求されたが確立できなかった場合、一部のアプリケーションは接続を直ちにシャットダウンすることを選択できます。 セキュリティ コンテキストを確立できない場合、サーバーは、SspiDeleteSecurityContextAsync 関数を呼び出すことによって、部分的に作成されたコンテキストを解放する必要があります。
その他 備考については、AcceptSecurityContext を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 バージョン 1607 [カーネル モード ドライバーのみ] |
サポートされる最小サーバー | Windows Server 2016 [カーネル モード ドライバーのみ] |
ヘッダー | sspi.h |
関連項目
AcceptSecurityContext の
ImpersonateSecurityContext の
SspiAcquireCredentialsHandleAsync の