Fungsi LsaCallAuthenticationPackage (ntsecapi.h)

Fungsi LsaCallAuthenticationPackage digunakan oleh aplikasi masuk untuk berkomunikasi dengan paket autentikasi.

Fungsi ini biasanya digunakan untuk mengakses layanan yang disediakan oleh paket autentikasi.

Sintaks

NTSTATUS LsaCallAuthenticationPackage(
  [in]  HANDLE    LsaHandle,
  [in]  ULONG     AuthenticationPackage,
  [in]  PVOID     ProtocolSubmitBuffer,
  [in]  ULONG     SubmitBufferLength,
  [out] PVOID     *ProtocolReturnBuffer,
  [out] PULONG    ReturnBufferLength,
  [out] PNTSTATUS ProtocolStatus
);

Parameter

[in] LsaHandle

Handel yang diperoleh dari panggilan sebelumnya ke LsaRegisterLogonProcess atau LsaConnectUntrusted.

[in] AuthenticationPackage

Menyediakan pengidentifikasi paket autentikasi. Nilai ini diperoleh dengan memanggil LsaLookupAuthenticationPackage.

[in] ProtocolSubmitBuffer

Buffer pesan khusus paket autentikasi yang diteruskan ke paket autentikasi.

Untuk informasi tentang format dan konten buffer ini, lihat dokumentasi untuk paket autentikasi individual.

[in] SubmitBufferLength

Menunjukkan panjang, dalam byte, dari buffer ProtocolSubmitBuffer .

[out] ProtocolReturnBuffer

Pointer yang menerima alamat buffer yang dikembalikan oleh paket autentikasi.

Untuk informasi tentang format dan konten buffer ini, lihat dokumentasi untuk paket autentikasi individual.

Buffer ini dialokasikan oleh fungsi ini. Setelah Anda selesai menggunakan buffer ini, kosongkan memori dengan memanggil fungsi LsaFreeReturnBuffer .

[out] ReturnBufferLength

Penunjuk ke ULONG yang menerima panjang buffer yang dikembalikan, dalam byte.

[out] ProtocolStatus

Jika fungsi berhasil, parameter ini menerima kode NTSTATUS yang menunjukkan status penyelesaian paket autentikasi.

Nilai kembali

Jika fungsi berhasil, nilai yang dikembalikan adalah STATUS_SUCCESS. Periksa parameter ProtocolStatus untuk mendapatkan status yang dikembalikan oleh paket autentikasi.

Jika fungsi gagal, nilai yang dikembalikan adalah kode NTSTATUS . Berikut ini adalah kemungkinan kode kesalahan.

Menampilkan kode Deskripsi
STATUS_QUOTA_EXCEEDED
Panggilan tidak dapat diselesaikan karena kuota memori klien tidak cukup untuk mengalokasikan buffer pengembalian.
STATUS_NO_SUCH_PACKAGE
Paket autentikasi yang ditentukan tidak dikenali oleh LSA.
STATUS_PKINIT_FAILURE
Klien Kerberos menerima sertifikat KDC yang tidak valid. Untuk masuk perangkat, validasi KDC yang ketat diperlukan, sehingga KDC harus memiliki sertifikat yang menggunakan templat "Autentikasi Kerberos" atau yang setara. Sertifikat KDC juga dapat kedaluwarsa, dicabut, atau klien sedang dalam serangan aktif mengirim permintaan ke server yang salah.
STATUS_PKINIT_CLIENT_FAILURE
Klien Kerberos menggunakan sertifikat sistem yang tidak valid. Untuk masuk perangkat, harus ada nama DNS. Selain itu, sertifikat sistem dapat kedaluwarsa atau sertifikat yang salah dapat dipilih.
 

Untuk informasi selengkapnya, lihat Nilai Pengembalian Fungsi Kebijakan LSA.

Fungsi LsaNtStatusToWinError mengonversi kode NTSTATUS menjadi kode kesalahan Windows.

Keterangan

Aplikasi masuk dapat memanggil LsaCallAuthenticationPackage untuk berkomunikasi dengan paket autentikasi. Ada beberapa alasan mengapa aplikasi dapat melakukan ini:

  • Untuk menerapkan protokol autentikasi beberapa pesan, seperti protokol Challenge-Response NTLM.
  • Untuk meneruskan informasi perubahan status ke paket autentikasi. Misalnya, NTLM mungkin memberi tahu paket MSV1_0 bahwa pengendali domain yang sebelumnya tidak dapat dijangkau sekarang dapat dijangkau. Paket autentikasi kemudian akan masuk kembali setiap pengguna yang masuk ke pengendali domain tersebut.
Biasanya, fungsi ini digunakan untuk bertukar informasi dengan paket autentikasi kustom. Fungsi ini tidak diperlukan oleh aplikasi yang menggunakan salah satu paket autentikasi yang disediakan dengan Windows, seperti MSV1_0 atau Kerberos.

Anda harus memanggil LsaCallAuthenticationPackage untuk membersihkan kredensial perangkat PKINIT untuk LOCAL_SYSTEM dan NETWORK_SERVICE. Ketika tidak ada kredensial perangkat PKINIT, panggilan yang berhasil tidak melakukan operasi. Ketika ada kredensial perangkat PKINIT, panggilan yang berhasil membersihkan kredensial perangkat PKINIT sehingga hanya kredensial kata sandi yang tersisa.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header ntsecapi.h
Pustaka Secur32.lib
DLL Secur32.dll

Lihat juga

LsaFreeReturnBuffer

LsaLookupAuthenticationPackage

LsaNtStatusToWinError