LSA_AP_LOGON_USER_EX2 fungsi panggilan balik (ntsecpkg.h)

Digunakan untuk mengautentikasi upaya masuk pengguna pada masuk awal pengguna. Sesi masuk baru dibuat untuk pengguna, dan informasi validasi untuk pengguna dikembalikan.

Sintaks

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
)
{...}

Parameter

[in] ClientRequest

Penunjuk ke buffer buram LSA_CLIENT_REQUEST yang mewakili permintaan klien.

[in] LogonType

SECURITY_LOGON_TYPE nilai yang mengidentifikasi jenis masuk.

[in] ProtocolSubmitBuffer

Buffer yang menyediakan informasi autentikasi khusus untuk paket autentikasi.

[in] ClientBufferBase

Buffer yang menyediakan alamat dalam proses klien tempat informasi autentikasi adalah residen. Ini mungkin diperlukan untuk memperbaiki penunjuk apa pun dalam buffer informasi autentikasi.

[in] SubmitBufferSize

Nilai ULONG yang menunjukkan ukuran, dalam byte, dari buffer informasi autentikasi.

[out] ProfileBuffer

Pointer yang menerima alamat buffer profil dalam proses klien. Paket autentikasi bertanggung jawab untuk mengalokasikan ProfileBuffer dalam proses klien dengan memanggil fungsi AllocateClientBuffer . Namun, jika LSA kemudian mengalami kesalahan yang mencegah keberhasilan masuk, maka LSA akan mengurus pemberhentian buffer ini.

Isi buffer ini ditentukan oleh paket autentikasi. LSA tidak mengubah buffer ini; itu hanya mengembalikan nilai ke fungsi LsaLogonUser .

[out] ProfileBufferSize

Penunjuk ke ULONG yang menerima ukuran buffer ProfileBuffer .

[out] LogonId

Penunjuk ke variabel LUID yang menerima ID masuk baru yang secara unik mengidentifikasi sesi masuk ini. Paket autentikasi bertanggung jawab untuk mengalokasikan LUID ini dan membuat sesi masuk LSA untuk masuk ini.

[out] SubStatus

Arahkan ke NTSTATUS yang menerima alasan kegagalan karena pembatasan akun. Nilai yang dikembalikan dalam SubStatus ditentukan oleh paket autentikasi.

Tabel berikut mencantumkan nilai SubStatus untuk paket autentikasi MSV1_0 dan Kerberos.

Nilai Makna
STATUS_INVALID_LOGON_HOURS
Akun pengguna memiliki batasan waktu; saat ini tidak dapat digunakan untuk log masuk.
STATUS_INVALID_WORKSTATION
Akun pengguna memiliki batasan stasiun kerja; tidak dapat digunakan untuk masuk ke stasiun kerja saat ini.
STATUS_PASSWORD_EXPIRED
Kata sandi akun pengguna telah kedaluwarsa.
STATUS_ACCOUNT_DISABLED
Akun pengguna saat ini dinonaktifkan dan tidak dapat digunakan untuk masuk.
 

Informasi selengkapnya tentang kode NTSTATUS dapat ditemukan di file header Subauth.h yang dikirim dengan Platform SDK.

Fungsi LsaNtStatusToWinError mengonversi kode NTSTATUS ke kode kesalahan Windows.

[out] TokenInformationType

Pointer yang menerima alamat nilai LSA_TOKEN_INFORMATION_TYPE yang menunjukkan jenis informasi yang dikembalikan untuk dimasukkan dalam token yang akan dibuat. Informasi dikembalikan dengan parameter TokenInformation .

[out] TokenInformation

Pointer yang menerima alamat informasi yang akan disertakan dalam token. Format dan konten TokenInformation ditunjukkan oleh parameter TokenInformationType . Paket autentikasi Anda bertanggung jawab untuk mengalokasikan memori yang digunakan oleh TokenInformation; namun, memori ini akan dikosongkan oleh LSA.

[out] AccountName

Arahkan ke struktur LSA_UNICODE_STRING yang menerima nama akun pengguna. AccountName harus selalu dikembalikan terlepas dari keberhasilan atau kegagalan panggilan; string-nya disertakan dalam catatan audit untuk upaya autentikasi. Paket autentikasi Anda bertanggung jawab untuk mengalokasikan memori yang digunakan oleh AccountName; namun, memori ini akan dikosongkan oleh LSA.

[out] AuthenticatingAuthority

Opsional. Arahkan ke struktur LSA_UNICODE_STRING yang menerima deskripsi otoritas autentikasi untuk masuk. Parameter ini mungkin NULL. String ini disertakan dalam catatan audit untuk upaya autentikasi. Paket autentikasi Anda bertanggung jawab untuk mengalokasikan memori yang digunakan oleh AuthenticatingAuthority; namun, memori ini akan dikosongkan oleh LSA.

Paket autentikasi MSV1_0 mengembalikan nama domain domain yang memvalidasi akun. Paket autentikasi Kerberos mengembalikan nama domain NetBIOS.

[out] MachineName

Pilihan. Pointer yang menerima alamat struktur UNICODE_STRING yang berisi nama komputer klien. String ini dapat dihilangkan secara opsional. String ini disertakan dalam catatan audit untuk upaya autentikasi ini. Paket autentikasi Anda bertanggung jawab untuk mengalokasikan memori yang digunakan oleh MachineName; namun, memori ini akan dikosongkan oleh LSA.

Paket autentikasi MSV1_0 mengembalikan nama NetBIOS dari stasiun kerja klien.

[out] PrimaryCredentials

Arahkan ke struktur SECPKG_PRIMARY_CRED yang mengembalikan kredensial utama untuk diserahkan ke paket lain.

[out] SupplementalCredentials

Penunjuk ke array SECPKG_SUPPLEMENTAL_CRED_ARRAY kredensial tambahan untuk paket lain.

Menampilkan nilai

Jika fungsi berhasil, fungsi harus mengembalikan STATUS_SUCCESS.

Jika tidak, kode kesalahan harus mengembalikan kode kesalahan NTSTATUS, yang dapat menjadi salah satu nilai berikut atau salah satu Nilai Pengembalian Fungsi Kebijakan LSA.

Menampilkan kode Deskripsi
STATUS_QUOTA_EXCEEDED
Log masuk tidak dapat diselesaikan karena kuota memori klien tidak cukup untuk mengalokasikan buffer pengembalian.
STATUS_NO_LOGON_SERVERS
Tidak ada pengendali domain yang tersedia untuk melayani permintaan autentikasi.
STATUS_LOGON_FAILURE
Upaya masuk gagal. Alasan kegagalan tidak ditentukan; alasan umum termasuk nama pengguna dan kata sandi yang salah eja.
STATUS_ACCOUNT_RESTRICTION
Akun pengguna dan kata sandi sah, tetapi pembatasan akun pengguna mencegah keberhasilan masuk saat ini. Untuk informasi tambahan, lihat parameter SubStatus .
STATUS_BAD_VALIDATION_CLASS
Informasi autentikasi yang diberikan tidak dikenali oleh paket autentikasi.
STATUS_INVALID_LOGON_TYPE
LogonType tidak valid.
STATUS_LOGON_SESSION_COLLISION
ID masuk yang dipilih untuk sesi masuk ini (dalam parameter LogonId ) sudah ada.
STATUS_NETLOGON_NOT_STARTED
Database SAM atau layanan Netlogon diperlukan, tetapi tidak tersedia.
STATUS_NO_MEMORY
Memori virtual klien atau kuota pagefile tidak cukup untuk mengalokasikan buffer pengembalian.
 

Aplikasi panggilan dapat menggunakan fungsi LsaNtStatusToWinError untuk mengonversi kode NTSTATUS ke kode kesalahan Windows.

Keterangan

Paket autentikasi harus menerapkan salah satu fungsi berikut: LsaApLogonUser, LsaApLogonUserEx, atau LsaApLogonUserEx2.

Persyaratan

   
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header ntsecpkg.h

Lihat juga

LSA_CLIENT_REQUEST

LSA_TOKEN_INFORMATION_TYPE

LSA_UNICODE_STRING

LsaApLogonUser

LsaApLogonUserEx

LsaCallAuthenticationPackage