LsaCallAuthenticationPackage 関数 (ntsecapi.h)

LsaCallAuthenticationPackage 関数は、認証パッケージと通信するためにログオン アプリケーションによって使用されます。

この関数は通常、認証パッケージによって提供されるサービスにアクセスするために使用されます。

構文

NTSTATUS LsaCallAuthenticationPackage(
  [in]  HANDLE    LsaHandle,
  [in]  ULONG     AuthenticationPackage,
  [in]  PVOID     ProtocolSubmitBuffer,
  [in]  ULONG     SubmitBufferLength,
  [out] PVOID     *ProtocolReturnBuffer,
  [out] PULONG    ReturnBufferLength,
  [out] PNTSTATUS ProtocolStatus
);

パラメーター

[in] LsaHandle

LsaRegisterLogonProcess または LsaConnectUntrusted の以前の呼び出しから取得したハンドル。

[in] AuthenticationPackage

認証パッケージの識別子を指定します。 この値は、 LsaLookupAuthenticationPackage を呼び出すことによって取得されます。

[in] ProtocolSubmitBuffer

認証パッケージに渡される認証パッケージ固有のメッセージ バッファー。

このバッファーの形式と内容については、個々の認証パッケージのドキュメントを参照してください。

[in] SubmitBufferLength

ProtocolSubmitBuffer バッファーの長さをバイト単位で示します。

[out] ProtocolReturnBuffer

認証パッケージによって返されるバッファーのアドレスを受け取るポインター。

このバッファーの形式と内容については、個々の認証パッケージのドキュメントを参照してください。

このバッファーは、この関数によって割り当てられます。 このバッファーの使用が完了したら、 LsaFreeReturnBuffer 関数を呼び出してメモリを解放します。

[out] ReturnBufferLength

返されたバッファーの長さをバイト単位で受け取る ULONG へのポインター。

[out] ProtocolStatus

関数が成功した場合、このパラメーターは認証パッケージの完了状態を示す NTSTATUS コードを受け取ります。

戻り値

関数が成功した場合、戻り値はSTATUS_SUCCESS。 ProtocolStatus パラメーターを確認して、認証パッケージによって返される状態を取得します。

関数が失敗した場合、戻り値は NTSTATUS コードです。 考えられるエラー コードを次に示します。

リターン コード 説明
STATUS_QUOTA_EXCEEDED
クライアントのメモリ クォータがリターン バッファーを割り当てるのに十分でないため、呼び出しを完了できませんでした。
STATUS_NO_SUCH_PACKAGE
指定された認証パッケージは LSA によって認識されません。
STATUS_PKINIT_FAILURE
Kerberos クライアントが、無効な KDC 証明書を受信しました。 デバイス ログオンの場合は、KDC の厳密な検証が必要であるため、KDC には "Kerberos 認証" テンプレートを使用する証明書または同等の証明書が必要です。 また、KDC 証明書の有効期限が切れているか、失効しているか、クライアントが間違ったサーバーに要求を送信するアクティブな攻撃を受けている可能性があります。
STATUS_PKINIT_CLIENT_FAILURE
Kerberos クライアントが無効なシステム証明書を使用しています。 デバイス ログオンの場合は、DNS 名が必要です。 また、システム証明書の有効期限が切れているか、間違った証明書が選択されている可能性があります。
 

詳細については、「 LSA ポリシー関数の戻り値」を参照してください。

LsaNtStatusToWinError 関数は、NTSTATUS コードを Windows エラー コードに変換します。

注釈

ログオン アプリケーションは LsaCallAuthenticationPackage を呼び出して認証パッケージと通信できます。 アプリケーションでこれを行う理由はいくつかあります。

  • NTLM Challenge-Response プロトコルなどの複数メッセージ認証プロトコルを実装する。
  • 状態変更情報を認証パッケージに渡す。 たとえば、NTLM は、以前に到達できないドメイン コントローラーに到達できるようになったことをMSV1_0 パッケージに通知する場合があります。 その後、認証パッケージは、そのドメイン コントローラーにログオンしたすべてのユーザーに再ログオンします。
通常、この関数は、カスタム認証パッケージと情報を交換するために使用されます。 この関数は、Windows で提供されている認証パッケージ (MSV1_0や Kerberos など) のいずれかを使用しているアプリケーションでは必要ありません。

LOCAL_SYSTEMとNETWORK_SERVICEの PKINIT デバイス資格情報をクリーンするには、LsaCallAuthenticationPackage を呼び出す必要があります。 PKINIT デバイス資格情報がない場合、正常な呼び出しでは操作は行われません。 PKINIT デバイス資格情報がある場合、正常な呼び出しによって PKINIT デバイス資格情報がクリーンアップされ、パスワード資格情報のみが残ります。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー ntsecapi.h
Library Secur32.lib
[DLL] Secur32.dll

こちらもご覧ください

LsaFreeReturnBuffer

LsaLookupAuthenticationPackage

LsaNtStatusToWinError