Msv1_0SubAuthenticationRoutine関数 (subauth.h)

Msv1_0SubAuthenticationRoutine関数は、クライアント/サーバー固有の認証を実行します。

セキュリティ アカウント マネージャー (SAM) データベースからのセキュリティ プリンシパルの資格情報と情報は、認証のためにこの関数に渡されます。

この関数は、MSV1_0認証パッケージで使用するカスタムサブ認証パッケージ DLL によって実装されます。

Msv1_0SubAuthenticationRoutine関数は、非対話型認証の場合にのみ呼び出され、アカウントが存在する認証サーバー上でのみ呼び出され、レジストリ内の正しいキーの下にサブ認証 DLL が登録されている場合にのみ呼び出されます。

メモ Kerberos 認証パッケージでは、このルーチンは呼び出されません。
 

構文

NTSTATUS Msv1_0SubAuthenticationRoutine(
  [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

省略可能。 ログオンの状況を説明するフラグが含まれています。 このパラメーターには、次の値のいずれかを指定できます。

意味
MSV1_0_PASSTHRU
パススルー認証。 ユーザーがこのマシンに接続していません。
MSV1_0_GUEST_LOGON
これは、GUEST ユーザー アカウントを使用したログオンの再試行です。

[in] UserAll

SAM データベースから返されたユーザーの説明を含む USER_ALL_INFORMATION 構造体へのポインター。

[out] WhichFields

SAM データベースに書き戻す必要がある USER_ALL_INFORMATION 構造体のメンバーを返します。 これらのメンバーは、 Msv1_0SubAuthenticationRoutine が呼び出し元に成功を返す場合にのみ書き込まれます。 次の値のみが有効です。

意味
USER_ALL_PARAMETERS
UserAll 構造体の Parameters メンバーに含まれるデータを SAM データベースに書き戻します。

Parameters メンバーのUNICODE_STRING バッファーのサイズが変更された場合、Msv1_0SubAuthenticationRoutine MIDL_user_free関数を使用してバッファーを削除し、MIDL_user_allocate関数を使用して再割り当てを行う必要があります。

[out] UserFlags

LsaLogonUser 関数の ProfileBuffer パラメーターにMSV1_0_LM20_LOGON_PROFILE構造体が含まれている場合に返される値。 現在、構造体の UserFlags メンバーに対して、次の値が定義されています。

意味
LOGON_GUEST
これはゲスト ログオンです。
LOGON_NOENCRYPTION
呼び出し元が暗号化された資格情報を指定しませんでした。
 
メモ 規則により、サブ認証パッケージは UserFlags の上位バイトでのみビットを返します。ただし、この規則は適用されません。
 

[out] Authoritative

返される状態が元の呼び出し元に返される権限のある状態であるかどうかを示すブール値へのポインター。 戻り値が FALSE の場合は、別のドメイン コントローラーでログオン要求を再試行できます。 このパラメーターは、関数呼び出しの戻り値に関係なく、有効な情報を返す必要があります。

[out] LogoffTime

ユーザーがシステムからログオフする時刻を受け取る値へのポインター。 この時間は、ログオンの有効期間を制御するために使用され、GMT 相対システム時刻として指定されます。

[out] KickoffTime

ユーザーがシステムからログオフする時刻を受け取る値へのポインター。 この時間は、ログオンの有効期間を制御するために使用され、GMT 相対システム時刻として指定されます。 ユーザーがログオフしない場合は、次のような大きな正の値を指定します。

KickoffTime->HighPart = 0x7FFFFFFF;
KickoffTime->LowPart = 0xFFFFFFFF;

戻り値

この関数は、次のいずれかの値を返す必要があります。

リターン コード 説明
STATUS_SUCCESS
エラーはありませんでした。
STATUS_ACCOUNT_DISABLED
アカウントが無効である。
STATUS_ACCOUNT_EXPIRED
アカウントの有効期限が切れています。
STATUS_ACCOUNT_LOCKED_OUT
アカウントはロックアウトされています。
STATUS_INVALID_INFO_CLASS
LogonLevel が無効です。
STATUS_INVALID_LOGON_HOURS
現時点では、ユーザーはログオンを許可されていません。
STATUS_INVALID_WORKSTATION
ユーザーは、指定されたワークステーションにログオンする権限がありません。
STATUS_NO_SUCH_USER
指定したユーザーにアカウントがありません。
STATUS_PASSWORD_EXPIRED
パスワードの有効期限が切れています。
STATUS_PASSWORD_MUST_CHANGE
アカウントは、次回ログオン時にパスワードを変更する必要があることを示すマークが付けられます。
STATUS_WRONG_PASSWORD
パスワードが無効です。

注釈

AuthenticationInformation パラメーターの一部がサブ認証を実行することを示し、Msv1_0SubAuthenticationRoutine関数をエクスポートするサブ認証 DLL がワークステーションに正しく登録されている場合、この関数はMSV1_0認証パッケージによって呼び出されます。

MSV1_0認証パッケージは、 MSV1_0_INTERACTIVE_LOGON 構造を必要とする対話型ログオンのサブ認証をサポートしていません。 MSV1_0_LM20_LOGON構造を必要とするネットワーク ログオンでは、サブ認証を使用できます。

Msv1_0SubAuthenticationRoutine関数は、正しいドメイン コントローラーが見つから、認証されるセキュリティ プリンシパルに関するすべての情報が SAM データベースから取得された後に呼び出されます。 サブ認証を使用する場合、認証はサブ認証 DLL の役割であり、その DLL によってエクスポートされた Msv1_0SubAuthenticationRoutine 関数によって実行される必要があります。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー subauth.h