LSA_AP_LOGON_USER fungsi panggilan balik (ntsecpkg.h)
Mengautentikasi kredensial masuk pengguna.
Fungsi ini hanya dipanggil untuk masuk awal pengguna. Permintaan autentikasi berikutnya harus menggunakan LsaCallAuthenticationPackage.
Jika LsaApLogonUser berhasil, LsaApLogonUser akan membuat sesi masuk. Ini juga mengembalikan informasi yang digunakan untuk membangun token yang mewakili pengguna yang baru masuk.
Sintaks
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
)
{...}
Parameter
[in] ClientRequest
Penunjuk ke buffer LSA_CLIENT_REQUEST buram yang mewakili permintaan klien LSA. Paket autentikasi Anda dapat meneruskan nilai ini ke AllocateClientBuffer dan FreeClientBuffer untuk mengidentifikasi proses klien tempat memori harus dialokasikan atau dibebaskan.
[in] LogonType
Nilai SECURITY_LOGON_TYPE mengidentifikasi jenis masuk yang diminta.
[in] AuthenticationInformation
Menyediakan informasi autentikasi khusus untuk paket autentikasi. LSA akan membebaskan buffer ini. Ini adalah buffer input yang sama yang diteruskan ke LsaLogonUser.
[in] ClientAuthenticationBase
Menyediakan alamat informasi autentikasi dalam proses klien. Ini mungkin diperlukan untuk memetakan ulang pointer apa pun dalam buffer AuthenticationInformation .
[in] AuthenticationInformationLength
Menunjukkan panjang, dalam byte, dari buffer AuthenticationInformation .
[out] ProfileBuffer
Pointer yang menerima alamat buffer profil dalam proses klien. Paket autentikasi bertanggung jawab untuk mengalokasikan buffer ProfileBuffer dalam proses klien dengan memanggil fungsi AllocateClientBuffer . Namun, jika LSA kemudian mengalami kesalahan yang mencegah keberhasilan masuk, LSA akan membebaskan buffer ini.
Isi buffer ini ditentukan oleh paket autentikasi. LSA tidak mengubah buffer ini; itu hanya mengembalikan nilai ke fungsi LsaLogonUser .
[out] ProfileBufferLength
Penunjuk ke ULONG yang menerima panjang buffer ProfileBuffer , dalam byte.
[out] LogonId
Penunjuk ke 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 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.
Informasi lebih lanjut tentang kode NTSTATUS dapat ditemukan di file header Subauth.h yang dikirim dengan Platform SDK.
Fungsi LsaNtStatusToWinError mengonversi kode NTSTATUS menjadi 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 dalam buffer TokenInformation .
[out] TokenInformation
Pointer yang menerima informasi yang akan disertakan dalam token. Format dan konten buffer TokenInformation ditunjukkan oleh parameter TokenInformationType . Paket autentikasi Anda bertanggung jawab untuk mengalokasikan memori yang digunakan oleh TokenInformation; namun, memori ini akan dibebaskan 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 dibebaskan 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 dibebaskan oleh LSA.
Paket autentikasi MSV1_0 mengembalikan nama domain domain yang memvalidasi akun. Paket autentikasi Kerberos mengembalikan nama domain NetBIOS.
Nilai kembali
Jika fungsi berhasil, fungsi harus mengembalikan STATUS_SUCCESS.
Jika fungsi gagal, fungsi harus mengembalikan kode kesalahan NTSTATUS, yang dapat menjadi salah satu nilai berikut atau salah satu Nilai Pengembalian Fungsi Kebijakan LSA.
Menampilkan kode | Deskripsi |
---|---|
|
Log masuk tidak dapat diselesaikan karena kuota memori klien tidak cukup untuk mengalokasikan buffer pengembalian. |
|
Tidak ada pengontrol domain yang tersedia untuk melayani permintaan autentikasi. |
|
Upaya masuk gagal. Alasan kegagalan tidak ditentukan; alasan umum termasuk nama pengguna dan kata sandi yang salah eja. |
|
Akun pengguna dan kata sandi sah, tetapi pembatasan akun pengguna mencegah masuk saat ini. Untuk informasi tambahan, lihat parameter SubStatus . |
|
Informasi autentikasi yang diberikan tidak dikenali oleh paket autentikasi yang ditentukan. |
Aplikasi panggilan dapat menggunakan fungsi LsaNtStatusToWinError untuk mengonversi kode NTSTATUS ke kode kesalahan Windows.
Keterangan
Paket autentikasi harus mengimplementasikan 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk