Win32 API 日本語リファレンス
ホーム › Security.Authentication.Identity › PLSA_AP_LOGON_USER_EX2

PLSA_AP_LOGON_USER_EX2

コールバック

シグネチャ

NTSTATUS PLSA_AP_LOGON_USER_EX2(
    void** ClientRequest,
    SECURITY_LOGON_TYPE LogonType,
    void* ProtocolSubmitBuffer,
    void* ClientBufferBase,
    DWORD SubmitBufferSize,
    void** ProfileBuffer,
    DWORD* ProfileBufferSize,
    LUID* LogonId,
    INT* SubStatus,
    LSA_TOKEN_INFORMATION_TYPE* TokenInformationType,
    void** TokenInformation,
    LSA_UNICODE_STRING** AccountName,
    LSA_UNICODE_STRING** AuthenticatingAuthority,
    LSA_UNICODE_STRING** MachineName,
    SECPKG_PRIMARY_CRED* PrimaryCredentials,
    SECPKG_SUPPLEMENTAL_CRED_ARRAY** SupplementalCredentials
);

パラメーター

フィールド型説明
ClientRequestvoid**クライアントの要求を表す LSA_CLIENT_REQUEST 不透明バッファーへのポインター。
LogonTypeSECURITY_LOGON_TYPEログオンの種類を識別する SECURITY_LOGON_TYPE 値。
ProtocolSubmitBuffervoid*認証パッケージに固有の認証情報を提供するバッファー。
ClientBufferBasevoid*認証情報が置かれていたクライアントプロセス内のアドレスを提供するバッファー。認証情報バッファー内のポインターを修正するために必要になる場合があります。
SubmitBufferSizeDWORD認証情報バッファーのサイズ (バイト単位) を示す ULONG 値。
ProfileBuffervoid**

クライアントプロセス内のプロファイルバッファーのアドレスを受け取るポインター。認証パッケージは、 AllocateClientBuffer 関数を呼び出して、クライアントプロセス内に ProfileBuffer を割り当てる必要があります。ただし、その後に LSA がログオンの成功を妨げるエラーを検出した場合は、LSA がこのバッファーを解放します。

このバッファーの内容は認証パッケージによって決まります。LSA はこのバッファーを変更せず、単にその値を LsaLogonUser 関数に返します。

ProfileBufferSizeDWORD*ProfileBuffer バッファーのサイズを受け取る ULONG へのポインター。
LogonIdLUID*このログオンセッションを一意に識別する新しいログオン ID を受け取る LUID 変数へのポインター。認証パッケージは、この LUID を割り当て、このログオンに対する LSA ログオンセッションを作成する必要があります。
SubStatusINT*

アカウントの制限による失敗の理由を受け取る NTSTATUS へのポインター。SubStatus に返される値は認証パッケージによって決まります。

次の表に、MSV1_0 および Kerberos 認証パッケージの SubStatus 値を示します。

値 意味
STATUS_INVALID_LOGON_HOURS
ユーザーアカウントに時間帯の制限があります。現在の時刻ではログオンに使用できません。
STATUS_INVALID_WORKSTATION
ユーザーアカウントにワークステーションの制限があります。現在のワークステーションへのログオンには使用できません。
STATUS_PASSWORD_EXPIRED
ユーザーアカウントのパスワードの有効期限が切れています。
STATUS_ACCOUNT_DISABLED
ユーザーアカウントは現在無効になっており、ログオンに使用できません。

NTSTATUS コードの詳細については、Platform SDK に付属する Subauth.h ヘッダーファイルを参照してください。

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

TokenInformationTypeLSA_TOKEN_INFORMATION_TYPE*作成されるトークンに含めるために返される情報の種類を示す LSA_TOKEN_INFORMATION_TYPE 値のアドレスを受け取るポインター。情報は TokenInformation パラメーターによって返されます。
TokenInformationvoid**トークンに含める情報のアドレスを受け取るポインター。TokenInformation の形式と内容は TokenInformationType パラメーターによって示されます。TokenInformation が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。
AccountNameLSA_UNICODE_STRING**ユーザーアカウントの名前を受け取る LSA_UNICODE_STRING 構造体へのポインター。AccountName は、呼び出しの成否にかかわらず常に返す必要があります。この文字列は、認証試行の監査レコードに含まれます。AccountName が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。
AuthenticatingAuthorityLSA_UNICODE_STRING**

省略可能。ログオンの認証機関の説明を受け取る LSA_UNICODE_STRING 構造体へのポインター。このパラメーターは NULL でもかまいません。この文字列は、認証試行の監査レコードに含まれます。AuthenticatingAuthority が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。

MSV1_0 認証パッケージは、アカウントを検証したドメインのドメイン名を返します。Kerberos 認証パッケージは NetBIOS ドメイン名を返します。

MachineNameLSA_UNICODE_STRING**

省略可能。クライアントのコンピューター名を含む UNICODE_STRING 構造体のアドレスを受け取るポインター。この文字列は省略してもかまいません。この文字列は、この認証試行の監査レコードに含まれます。MachineName が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。

MSV1_0 認証パッケージは、クライアントのワークステーションの NetBIOS 名を返します。

PrimaryCredentialsSECPKG_PRIMARY_CRED*他のパッケージに引き渡すためのプライマリ資格情報を返す SECPKG_PRIMARY_CRED 構造体へのポインター。
SupplementalCredentialsSECPKG_SUPPLEMENTAL_CRED_ARRAY**他のパッケージ向けの補足資格情報を格納する SECPKG_SUPPLEMENTAL_CRED_ARRAY 配列へのポインター。

公式ドキュメント

ユーザーの初回ログオン時に、ユーザーのログオン試行を認証するために使用されます。 ユーザーに対して新しいログオンセッションが確立され、ユーザーの検証情報が返されます。

戻り値

関数が成功した場合は、STATUS_SUCCESS を返します。

それ以外の場合は、NTSTATUS エラーコードを返します。これは次のいずれかの値、または LSA ポリシー関数の戻り値 のいずれかになります。

戻り値 説明
STATUS_QUOTA_EXCEEDED
クライアントのメモリクォータが不足しており、戻り値用のバッファーを割り当てられないため、ログオンを完了できませんでした。
STATUS_NO_LOGON_SERVERS
認証要求を処理できるドメインコントローラーがありません。
STATUS_LOGON_FAILURE
ログオン試行が失敗しました。失敗の理由は指定されません。一般的な理由としては、ユーザー名やパスワードの誤入力が挙げられます。
STATUS_ACCOUNT_RESTRICTION
ユーザーアカウントとパスワードは正当でしたが、ユーザーアカウントの制限により現時点ではログオンできません。詳細については、SubStatus パラメーターを参照してください。
STATUS_BAD_VALIDATION_CLASS
指定された認証情報が認証パッケージで認識されません。
STATUS_INVALID_LOGON_TYPE
LogonType が有効ではありませんでした。
STATUS_LOGON_SESSION_COLLISION
このログオンセッション用に選択されたログオン ID (LogonId パラメーター) は既に存在します。
STATUS_NETLOGON_NOT_STARTED
SAM データベースまたは Netlogon サービスが必要ですが、利用できません。
STATUS_NO_MEMORY
クライアントの仮想メモリまたはページファイルのクォータが不足しており、戻り値用のバッファーを割り当てられません。

呼び出し元のアプリケーションは、 LsaNtStatusToWinError 関数を使用して、NTSTATUS コードを Windows エラーコードに変換できます。

解説(Remarks)

認証パッケージは、次のいずれかの関数を実装する必要があります。 LsaApLogonUser、 LsaApLogonUserEx、または LsaApLogonUserEx2。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)