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

PLSA_AP_LOGON_USER_EX

コールバック

シグネチャ

NTSTATUS PLSA_AP_LOGON_USER_EX(
    void** ClientRequest,
    SECURITY_LOGON_TYPE LogonType,
    void* AuthenticationInformation,
    void* ClientAuthenticationBase,
    DWORD AuthenticationInformationLength,
    void** ProfileBuffer,
    DWORD* ProfileBufferLength,
    LUID* LogonId,
    INT* SubStatus,
    LSA_TOKEN_INFORMATION_TYPE* TokenInformationType,
    void** TokenInformation,
    LSA_UNICODE_STRING** AccountName,
    LSA_UNICODE_STRING** AuthenticatingAuthority,
    LSA_UNICODE_STRING** MachineName
);

パラメーター

フィールド型説明
ClientRequestvoid**LSA クライアントの要求を表す、不透明な LSA_CLIENT_REQUEST データ型へのポインターです。
LogonTypeSECURITY_LOGON_TYPE試行されるログオンの種類を示す SECURITY_LOGON_TYPE 構造体です。
AuthenticationInformationvoid*認証パッケージ固有の認証情報を指定します。このバッファーは LSA が解放します。
ClientAuthenticationBasevoid*クライアント プロセス内の認証情報のアドレスを指定します。AuthenticationInformation バッファー内のポインターを再マップするために必要になる場合があります。
AuthenticationInformationLengthDWORDAuthenticationInformation バッファーの長さを示します。
ProfileBuffervoid**

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

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

ProfileBufferLengthDWORD*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 ヘッダー ファイルを参照してください。

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**

省略可能です。クライアントのワークステーション名を格納する LSA_UNICODE_STRING 構造体のアドレスを受け取るポインターです。この情報は認証試行の監査レコードに含まれます。MachineName が使用するメモリの割り当ては認証パッケージの責任ですが、このメモリは LSA によって解放されます。

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

公式ドキュメント

ユーザーのログオン資格情報を認証します。

この関数は、ユーザーの最初のログオンの場合にのみ ローカル セキュリティ機関 (LSA) から呼び出されます。以降の認証要求では LsaCallAuthenticationPackage を使用する必要があります。LsaApLogonUserEx が成功すると、ログオン セッションを作成し、新しくログオンしたユーザーを表すトークンの構築に使用される情報を返します。

この関数は、ログオン試行の監査レコードにコンピューター名が追加される点で LsaApLogonUser と異なります。

戻り値

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

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

戻り値 説明
STATUS_NO_MEMORY
クライアントのメモリ クォータが不足しており、戻り値用のバッファーを割り当てられないため、ログオンを完了できませんでした。
STATUS_NO_LOGON_SERVERS
認証要求を処理できるドメイン コントローラーがありません。
STATUS_LOGON_FAILURE
ログオンの試行が失敗しました。失敗の理由は特定されません。一般的な原因としては、ユーザー名やパスワードの入力ミスなどがあります。
STATUS_ACCOUNT_RESTRICTION
ユーザー アカウントとパスワードは正当ですが、ユーザー アカウントの制限により、現時点ではログオンに成功できません。
STATUS_BAD_VALIDATION_CLASS
指定された認証情報が認証パッケージによって認識されます。

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

解説(Remarks)

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

LsaApLogonUserEx は C2 認定のために追加されました。C2 は米国政府が定義したセキュリティ分類です。

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