LSA_AP_LOGON_USER_EX2 コールバック関数 (ntsecpkg.h)
ユーザーの初回ログオン時のユーザー ログオン試行を認証するために使用されます。 ユーザーに対して新しいログオン セッションが確立され、ユーザーの検証情報が返されます。
構文
LSA_AP_LOGON_USER_EX2 LsaApLogonUserEx2;
NTSTATUS LsaApLogonUserEx2(
[in] PLSA_CLIENT_REQUEST ClientRequest,
[in] SECURITY_LOGON_TYPE LogonType,
[in] PVOID ProtocolSubmitBuffer,
[in] PVOID ClientBufferBase,
[in] ULONG SubmitBufferSize,
[out] PVOID *ProfileBuffer,
[out] PULONG ProfileBufferSize,
[out] PLUID LogonId,
[out] PNTSTATUS SubStatus,
[out] PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
[out] PVOID *TokenInformation,
[out] PUNICODE_STRING *AccountName,
[out] PUNICODE_STRING *AuthenticatingAuthority,
[out] PUNICODE_STRING *MachineName,
[out] PSECPKG_PRIMARY_CRED PrimaryCredentials,
[out] PSECPKG_SUPPLEMENTAL_CRED_ARRAY *SupplementalCredentials
)
{...}
パラメーター
[in] ClientRequest
クライアントの要求を表す LSA_CLIENT_REQUEST 不透明なバッファーへのポインター。
[in] LogonType
ログオンの種類を識別する値をSECURITY_LOGON_TYPEします。
[in] ProtocolSubmitBuffer
認証パッケージに固有の認証情報を提供するバッファー。
[in] ClientBufferBase
認証情報が常駐していたクライアント プロセス内のアドレスを提供するバッファー。 これは、認証情報バッファー内のポインターを修正するために必要な場合があります。
[in] SubmitBufferSize
認証情報バッファーのサイズをバイト単位で示す ULONG 値。
[out] ProfileBuffer
クライアント プロセス内のプロファイル バッファーのアドレスを受け取るポインター。 認証パッケージは、 AllocateClientBuffer 関数を呼び出して、クライアント プロセス内で ProfileBuffer を割り当てる役割を 担います。 ただし、LSA がログオンの成功を妨げるエラーが後で発生した場合、LSA はこのバッファーの解放を処理します。
このバッファーの内容は、認証パッケージによって決定されます。 LSA では、このバッファーは変更されません。 LsaLogonUser 関数に値を返すだけです。
[out] ProfileBufferSize
ProfileBuffer バッファーのサイズを受け取る ULONG へのポインター。
[out] LogonId
このログオン セッションを一意に識別する新しいログオン ID を受け取る LUID 変数へのポインター。 認証パッケージは、この LUID を割り当て、このログオン用の LSA ログオン セッションを作成する役割を担います。
[out] SubStatus
アカウント制限によるエラーの理由を受け取る NTSTATUS へのポインター。 SubStatus で返される値は、認証パッケージによって決定されます。
次の表に、MSV1_0および Kerberos 認証パッケージの SubStatus 値を示します。
NTSTATUS コードの詳細については、プラットフォーム SDK に付属の Subauth.h ヘッダー ファイルを参照してください。
LsaNtStatusToWinError 関数は、NTSTATUS コードを Windows エラー コードに変換します。
[out] TokenInformationType
作成するトークンに含めるために返される情報の種類を示す LSA_TOKEN_INFORMATION_TYPE 値のアドレスを受け取るポインター。 情報は TokenInformation パラメーターを使用して返されます。
[out] TokenInformation
トークンに含める情報のアドレスを受け取るポインター。 TokenInformation の形式と内容は、TokenInformationType パラメーターによって示されます。 認証パッケージは、 TokenInformation によって使用されるメモリを割り当てる役割を担います。ただし、このメモリは LSA によって解放されます。
[out] AccountName
ユーザー アカウントの名前を受け取る LSA_UNICODE_STRING 構造体へのポインター。 AccountName は、呼び出しの成功または失敗に関係なく、常に返される必要があります。その文字列は、認証試行の監査レコードに含まれます。 認証パッケージは、 AccountName によって使用されるメモリを割り当てる役割を担います。ただし、このメモリは LSA によって解放されます。
[out] AuthenticatingAuthority
任意。 ログオン の認証 機関の説明を受け取るLSA_UNICODE_STRING構造体へのポインター。 このパラメーターには NULL を指定できます。 この文字列は、認証試行の監査レコードに含まれます。 認証パッケージは、 AuthenticatingAuthority によって使用されるメモリを割り当てる役割を担います。ただし、このメモリは LSA によって解放されます。
MSV1_0認証パッケージは、アカウントを検証しているドメインのドメイン名を返します。 Kerberos 認証パッケージは、NetBIOS ドメイン名を返します。
[out] MachineName
任意。 クライアントのコンピューターの名前を含む UNICODE_STRING 構造体のアドレスを受け取るポインター。 必要に応じて、この文字列を省略できます。 この文字列は、この認証試行の監査レコードに含まれています。 認証パッケージは、 MachineName によって使用されるメモリを割り当てる役割を担います。ただし、このメモリは LSA によって解放されます。
MSV1_0認証パッケージは、クライアントのワークステーションの NetBIOS 名を返します。
[out] PrimaryCredentials
他のパッケージに渡すプライマリ資格情報を返す SECPKG_PRIMARY_CRED 構造体へのポインター。
[out] SupplementalCredentials
他のパッケージの補足資格情報の SECPKG_SUPPLEMENTAL_CRED_ARRAY 配列へのポインター。
戻り値
関数が成功した場合は、STATUS_SUCCESSを返す必要があります。
それ以外の場合は、NTSTATUS エラー コードを返す必要があります。エラー コードは、次の値のいずれか、または LSA ポリシー関数の戻り値のいずれかになります。
リターン コード | 説明 |
---|---|
|
クライアントのメモリ クォータがリターン バッファーを割り当てるのに不十分であるため、ログオンを完了できませんでした。 |
|
認証要求を処理するために使用できるドメイン コントローラーはありません。 |
|
ログインに失敗しました。 エラーの理由が指定されていません。一般的な理由には、スペルミスのあるユーザー名とパスワードが含まれます。 |
|
ユーザー アカウントとパスワードは正当なものでしたが、ユーザー アカウントの制限により、現時点でログオンが正常に行われなくなります。 詳細については、 SubStatus パラメーターに関するページを参照してください。 |
|
指定された認証情報は、認証パッケージによって認識されません。 |
|
LogonType が無効でした。 |
|
このログオン セッションに対して選択されたログオン ID ( LogonId パラメーター内) は既に存在します。 |
|
SAM データベースまたは Netlogon サービスは必要ですが、使用できません。 |
|
クライアントの仮想メモリまたはページファイルのクォータは、リターン バッファーを割り当てるには不十分です。 |
呼び出し元のアプリケーションでは 、LsaNtStatusToWinError 関数を使用して NTSTATUS コードを Windows エラー コードに変換できます。
解説
認証パッケージは、LsaApLogonUser、LsaApLogonUserEx、または LsaApLogonUserEx2 のいずれかの機能を実装する必要があります。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | ntsecpkg.h |