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
);パラメーター
| フィールド | 型 | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ClientRequest | void** | クライアントの要求を表す LSA_CLIENT_REQUEST 不透明バッファーへのポインター。 | ||||||||||
| LogonType | SECURITY_LOGON_TYPE | ログオンの種類を識別する SECURITY_LOGON_TYPE 値。 | ||||||||||
| ProtocolSubmitBuffer | void* | 認証パッケージに固有の認証情報を提供するバッファー。 | ||||||||||
| ClientBufferBase | void* | 認証情報が置かれていたクライアントプロセス内のアドレスを提供するバッファー。認証情報バッファー内のポインターを修正するために必要になる場合があります。 | ||||||||||
| SubmitBufferSize | DWORD | 認証情報バッファーのサイズ (バイト単位) を示す ULONG 値。 | ||||||||||
| ProfileBuffer | void** | クライアントプロセス内のプロファイルバッファーのアドレスを受け取るポインター。認証パッケージは、 AllocateClientBuffer 関数を呼び出して、クライアントプロセス内に ProfileBuffer を割り当てる必要があります。ただし、その後に LSA がログオンの成功を妨げるエラーを検出した場合は、LSA がこのバッファーを解放します。 このバッファーの内容は認証パッケージによって決まります。LSA はこのバッファーを変更せず、単にその値を LsaLogonUser 関数に返します。 | ||||||||||
| ProfileBufferSize | DWORD* | ProfileBuffer バッファーのサイズを受け取る ULONG へのポインター。 | ||||||||||
| LogonId | LUID* | このログオンセッションを一意に識別する新しいログオン ID を受け取る LUID 変数へのポインター。認証パッケージは、この LUID を割り当て、このログオンに対する LSA ログオンセッションを作成する必要があります。 | ||||||||||
| SubStatus | INT* | アカウントの制限による失敗の理由を受け取る NTSTATUS へのポインター。SubStatus に返される値は認証パッケージによって決まります。 次の表に、MSV1_0 および Kerberos 認証パッケージの SubStatus 値を示します。
NTSTATUS コードの詳細については、Platform SDK に付属する Subauth.h ヘッダーファイルを参照してください。 LsaNtStatusToWinError 関数は、NTSTATUS コードを Windows エラーコードに変換します。 | ||||||||||
| TokenInformationType | LSA_TOKEN_INFORMATION_TYPE* | 作成されるトークンに含めるために返される情報の種類を示す LSA_TOKEN_INFORMATION_TYPE 値のアドレスを受け取るポインター。情報は TokenInformation パラメーターによって返されます。 | ||||||||||
| TokenInformation | void** | トークンに含める情報のアドレスを受け取るポインター。TokenInformation の形式と内容は TokenInformationType パラメーターによって示されます。TokenInformation が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。 | ||||||||||
| AccountName | LSA_UNICODE_STRING** | ユーザーアカウントの名前を受け取る LSA_UNICODE_STRING 構造体へのポインター。AccountName は、呼び出しの成否にかかわらず常に返す必要があります。この文字列は、認証試行の監査レコードに含まれます。AccountName が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。 | ||||||||||
| AuthenticatingAuthority | LSA_UNICODE_STRING** | 省略可能。ログオンの認証機関の説明を受け取る LSA_UNICODE_STRING 構造体へのポインター。このパラメーターは NULL でもかまいません。この文字列は、認証試行の監査レコードに含まれます。AuthenticatingAuthority が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。 MSV1_0 認証パッケージは、アカウントを検証したドメインのドメイン名を返します。Kerberos 認証パッケージは NetBIOS ドメイン名を返します。 | ||||||||||
| MachineName | LSA_UNICODE_STRING** | 省略可能。クライアントのコンピューター名を含む UNICODE_STRING 構造体のアドレスを受け取るポインター。この文字列は省略してもかまいません。この文字列は、この認証試行の監査レコードに含まれます。MachineName が使用するメモリの割り当ては認証パッケージが行いますが、このメモリは LSA によって解放されます。 MSV1_0 認証パッケージは、クライアントのワークステーションの NetBIOS 名を返します。 | ||||||||||
| PrimaryCredentials | SECPKG_PRIMARY_CRED* | 他のパッケージに引き渡すためのプライマリ資格情報を返す SECPKG_PRIMARY_CRED 構造体へのポインター。 | ||||||||||
| SupplementalCredentials | SECPKG_SUPPLEMENTAL_CRED_ARRAY** | 他のパッケージ向けの補足資格情報を格納する SECPKG_SUPPLEMENTAL_CRED_ARRAY 配列へのポインター。 |
公式ドキュメント
ユーザーの初回ログオン時に、ユーザーのログオン試行を認証するために使用されます。 ユーザーに対して新しいログオンセッションが確立され、ユーザーの検証情報が返されます。
戻り値
関数が成功した場合は、STATUS_SUCCESS を返します。
それ以外の場合は、NTSTATUS エラーコードを返します。これは次のいずれかの値、または LSA ポリシー関数の戻り値 のいずれかになります。
| 戻り値 | 説明 |
|---|---|
| クライアントのメモリクォータが不足しており、戻り値用のバッファーを割り当てられないため、ログオンを完了できませんでした。 | |
| 認証要求を処理できるドメインコントローラーがありません。 | |
| ログオン試行が失敗しました。失敗の理由は指定されません。一般的な理由としては、ユーザー名やパスワードの誤入力が挙げられます。 | |
| ユーザーアカウントとパスワードは正当でしたが、ユーザーアカウントの制限により現時点ではログオンできません。詳細については、SubStatus パラメーターを参照してください。 | |
| 指定された認証情報が認証パッケージで認識されません。 | |
| LogonType が有効ではありませんでした。 | |
| このログオンセッション用に選択されたログオン ID (LogonId パラメーター) は既に存在します。 | |
| SAM データベースまたは Netlogon サービスが必要ですが、利用できません。 | |
| クライアントの仮想メモリまたはページファイルのクォータが不足しており、戻り値用のバッファーを割り当てられません。 |
呼び出し元のアプリケーションは、 LsaNtStatusToWinError 関数を使用して、NTSTATUS コードを Windows エラーコードに変換できます。
解説(Remarks)
認証パッケージは、次のいずれかの関数を実装する必要があります。 LsaApLogonUser、 LsaApLogonUserEx、または LsaApLogonUserEx2。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)