Msv1_0SubAuthenticationFilter関数 (subauth.h)
Msv1_0SubAuthenticationFilter関数は、ドメイン コントローラーに固有のユーザー ログオン認証を実行します。
この関数は、ユーザーのログオン データと、ドメイン コントローラーの セキュリティ アカウント マネージャー (SAM) データベースでユーザーに対して見つかったすべての情報を受け取ります。
この関数は、Kerberos およびMSV1_0認証パッケージで使用するカスタムサブ認証パッケージ DLL によって実装されます。
構文
NTSTATUS Msv1_0SubAuthenticationFilter(
[in] NETLOGON_LOGON_INFO_CLASS LogonLevel,
[in] PVOID LogonInformation,
[in] ULONG Flags,
[in] PUSER_ALL_INFORMATION UserAll,
[out] PULONG WhichFields,
[out] PULONG UserFlags,
[out] PBOOLEAN Authoritative,
[out] PLARGE_INTEGER LogoffTime,
[out] PLARGE_INTEGER KickoffTime
);
パラメーター
[in] LogonLevel
LogonInformation で指定された情報のレベルを指定します。 通常、このパラメーターは NetlogonInteractiveInformation に設定されます。
[in] LogonInformation
NETLOGON_LOGON_IDENTITY_INFO構造体へのポインター。 この構造体のメンバーには、ログオンしているユーザーに関する情報が含まれています。 LogonDomainName メンバーは無視されます。
[in] Flags
省略可能。 ログオンの状況を説明するフラグが含まれています。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
|
パススルー認証。 ユーザーがこのマシンに接続していません。 |
|
これは、ゲスト アカウントを使用したログオンの再試行です。 |
[in] UserAll
SAM データベースから返されたユーザーの説明を含む USER_ALL_INFORMATION 構造体へのポインター。
[out] WhichFields
SAM データベースに書き戻す必要がある USER_ALL_INFORMATION 構造体のメンバーを返します。 これらのメンバーは、Msv1_0SubAuthenticationFilterが成功 を 返す場合にのみ書き込まれます。 次の値のみが有効です。
値 | 意味 |
---|---|
|
UserAll 構造体の Parameters メンバーに含まれるデータを SAM データベースに書き戻します。
Parameters メンバーのUNICODE_STRING バッファーのサイズが変更された場合、Msv1_0SubAuthenticationFilter MIDL_user_free関数を使用してバッファーを削除し、MIDL_user_allocate関数を使用して再割り当てを行う必要があります。 |
[out] UserFlags
その関数の ProfileBuffer パラメーターの LsaLogonUser 関数から返される値。 このパラメーターには、次の値のいずれかを指定できます。
値 | 意味 |
---|---|
|
これはゲスト ログオンでした。 |
|
呼び出し元が暗号化された資格情報を指定しませんでした。 |
[out] Authoritative
返される状態が元の呼び出し元に返される権限のある状態であるかどうかを示すブール値へのポインター。 返される値が FALSE の場合は、別のドメイン コントローラーでログオン要求を再試行できます。 このパラメーターは、関数呼び出しの戻り値に関係なく、有効な情報を返す必要があります。 このパラメーターは、Kerberos 認証パッケージでは使用されません。
[out] LogoffTime
ユーザーがシステムからログオフする時刻を受け取る値へのポインター。 この時間は、ログオンの有効期間を制御するために使用され、GMT 相対 Windows システム時刻として指定されます。
[out] KickoffTime
ユーザーがシステムからログオフする時刻を受け取る値へのポインター。 この時間は、ログオンの有効期間を制御するために使用され、GMT 相対システム時刻として指定されます。 ユーザーが自動的にログオフされない場合は、次のように大きな正の値を指定します。
KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;
戻り値
この関数は、次のいずれかの値を返す必要があります。
リターン コード | 説明 |
---|---|
|
エラーはありませんでした。 |
|
アカウントが無効である。 |
|
アカウントの有効期限が切れています。 |
|
アカウントはロックアウトされています。 |
|
LogonLevel が無効です。 |
|
現時点では、ユーザーはログオンを許可されていません。 |
|
ユーザーは、指定されたワークステーションにログオンする権限がありません。 |
|
指定したユーザーにアカウントがありません。 |
|
パスワードの有効期限が切れています。 |
|
パスワードは、次のログオン時に変更する必要があります。 |
|
パスワードが無効です。 |
Msv1_0SubAuthenticationFilter関数が Kerberos 認証パッケージで使用されている場合、関数呼び出しで STATUS_SUCCESSが返され、LogoffTime または KickoffTime の 2 つのパラメーターのいずれかが 0 以外の値を持つ場合、この値はチケットの有効期間として使用されます。 一方、両方のパラメーターの値が 0 以外の場合は、これら 2 つの値のうち小さい方が使用されます。
チケットの有効期間に使用される値 ( LogoffTime と KickoffTime の早い方) が既定のチケット有効期間より大きい場合、その値はチケットの最大更新時間として使用されます。 逆に、2 つの値のうち大きい値 ( LogoffTime と KickoffTime の後半) が既定のチケット有効期間より小さい場合、この値はチケットの有効期間として使用されます。 詳細については、「 Microsoft Kerberos」を参照してください。
Kerberos 認証パッケージと共に使用すると、この関数からエラーが返された場合、 キー配布センター (KDC) は Kerberos エラー KDC_ERR_POLICYを返し、状態値は拡張エラー コードとして返されます。
注釈
この関数の実装では、 ライトウェイト ディレクトリ アクセス プロトコル (LDAP) トラフィックを引き起こす操作を実行しないでください。 たとえば、 Active Directory データベースに接続してクエリを実行しないでください。
MSV1_0または Kerberos 認証パッケージがログオンを検証した後、 Msv1_0SubAuthenticationFilter 関数は追加の検証を実行して、ユーザーがネットワーク アカウントにログオンできるかどうかを判断できます。 この関数は、サブ認証パッケージ DLL がドメイン コントローラーのレジストリに 'Auth0' として正しく登録されている場合に呼び出されます。 レジストリ パスは、関数がMSV1_0または Kerberos サブ認証パッケージ DLL 内にあるかどうかによって異なります。
このフィルター ルーチンは、ログオンを続行する必要があることを示すSTATUS_SUCCESS、または追加の検証が失敗したことを示すエラー コードを返す場合があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | subauth.h |