次の方法で共有


LSA_AP_LOGON_USER コールバック関数 (ntsecpkg.h)

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

この関数は、ユーザーの初回ログオンに対してのみ呼び出されます。 後続の認証要求では 、LsaCallAuthenticationPackage を使用する必要があります。

LsaApLogonUser が成功すると、ログオン セッションが作成されます。 また、新しくログオンしたユーザーを表すトークンの作成に使用される情報も返されます。

構文

LSA_AP_LOGON_USER LsaApLogonUser;

NTSTATUS LsaApLogonUser(
  [in]  PLSA_CLIENT_REQUEST ClientRequest,
  [in]  SECURITY_LOGON_TYPE LogonType,
  [in]  PVOID AuthenticationInformation,
  [in]  PVOID ClientAuthenticationBase,
  [in]  ULONG AuthenticationInformationLength,
  [out] PVOID *ProfileBuffer,
  [out] PULONG ProfileBufferLength,
  [out] PLUID LogonId,
  [out] PNTSTATUS SubStatus,
  [out] PLSA_TOKEN_INFORMATION_TYPE TokenInformationType,
  [out] PVOID *TokenInformation,
  [out] PLSA_UNICODE_STRING *AccountName,
  [out] PLSA_UNICODE_STRING *AuthenticatingAuthority
)
{...}

パラメーター

[in] ClientRequest

LSA クライアントの要求を表す不透明な LSA_CLIENT_REQUEST バッファーへのポインター。 メモリを割 り当てる か解放する必要があるクライアント プロセスを識別するために、認証パッケージでこの値を AllocateClientBuffer と FreeClientBuffer に渡すことができます。

[in] LogonType

要求されたログオンの種類を識別する SECURITY_LOGON_TYPE 値。

[in] AuthenticationInformation

認証パッケージに固有の認証情報を提供します。 LSA は、このバッファーを解放します。 これは、 LsaLogonUser に渡されるのと同じ入力バッファーです。

[in] ClientAuthenticationBase

クライアント プロセス内の認証情報のアドレスを提供します。 これは、 AuthenticationInformation バッファー内のポインターを再マップするために必要な場合があります。

[in] AuthenticationInformationLength

AuthenticationInformation バッファーの長さをバイト単位で示します。

[out] ProfileBuffer

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

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

[out] ProfileBufferLength

ProfileBuffer バッファーの長さをバイト単位で受け取る ULONG へのポインター。

[out] LogonId

このログオン セッションを一意に識別する新しいログオン ID を受け取る LUID へのポインター。 認証パッケージは、この LUID の割り当てと、このログオンのログオン セッションの作成を担当します。

[out] SubStatus

アカウント制限が原因でエラーの理由を受け取る NTSTATUS へのポインター。 SubStatus で返される値は、認証パッケージによって決まります。

次の表に、MSV1_0および Kerberos 認証パッケージの SubStatus 値を示します。

説明
STATUS_INVALID_LOGON_HOURS
ユーザー アカウントには時間制限があります。現時点では、ログオンには使用できません。
STATUS_INVALID_WORKSTATION
ユーザー アカウントにはワークステーションの制限があります。現在のワークステーションへのログオンには使用できません。
STATUS_PASSWORD_EXPIRED
ユーザー アカウントのパスワードの有効期限が切れています。
STATUS_ACCOUNT_DISABLED
ユーザー アカウントは現在無効になっており、ログオンには使用できません。
 

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 ドメイン名を返します。

戻り値

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

関数が失敗した場合は、NTSTATUS エラー コードを返す必要があります。エラー コードは、次の値のいずれか、または LSA ポリシー関数の戻り値のいずれかになります。

リターン コード 説明
STATUS_NO_MEMORY
クライアントのメモリ クォータが戻りバッファーを割り当てるのに不十分であるため、ログオンを完了できませんでした。
STATUS_NO_LOGON_SERVERS
認証要求を処理するために使用できるドメイン コントローラーはありません。
STATUS_LOGON_FAILURE
ログインに失敗しました。 エラーの理由が指定されていません。一般的な理由としては、ユーザー名とパスワードのスペルが間違っています。
STATUS_ACCOUNT_RESTRICTION
ユーザー アカウントとパスワードは正当なものでしたが、ユーザー アカウントの制限により、現時点ではログオンできません。 詳細については、 SubStatus パラメーターに関するページを参照してください。
STATUS_BAD_VALIDATION_CLASS
指定された認証情報は、指定された認証パッケージでは認識されません。
 

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

解説

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

要件

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

関連項目

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUserEx

LsaApLogonUserEx2

LsaCallAuthenticationPackage