Fungsi ImpersonateSecurityContext (sspi.h)
Fungsi ImpersonateSecurityContext memungkinkan server untuk meniru klien dengan menggunakan token yang sebelumnya diperoleh oleh panggilan ke AcceptSecurityContext (Umum) atau QuerySecurityContextToken. Fungsi ini memungkinkan server aplikasi untuk bertindak sebagai klien, dan dengan demikian semua kontrol akses yang diperlukan diberlakukan.
Sintaks
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(
[in] PCtxtHandle phContext
);
Parameter
[in] phContext
Handel konteks untuk meniru. Handel ini harus diperoleh dengan panggilan ke fungsi AcceptSecurityContext (Umum).
Menampilkan nilai
Jika fungsi berhasil, fungsi akan mengembalikan SEC_E_OK.
Jika fungsi gagal, fungsi mengembalikan kode kesalahan berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Handel yang diteruskan ke fungsi tidak valid. |
|
Klien tidak dapat ditiru. |
|
Nilai ini dikembalikan oleh mode kernel Schannel untuk menunjukkan bahwa fungsi ini tidak didukung. |
Keterangan
Aplikasi server memanggil fungsi ImpersonateSecurityContext ketika perlu meniru klien. Sebelum melakukannya, server harus telah mendapatkan handel konteks yang valid. Untuk mendapatkan handel konteks, server harus memanggil AcceptSecurityContext (Umum) untuk mengirimkan token keamanan masuk klien ke sistem keamanan. Server mendapatkan handel konteks jika konteks masuk divalidasi. Fungsi ini membuat token peniruan dan memungkinkan utas atau proses berjalan dengan konteks peniruan.
Saat menggunakan penyedia dukungan keamanan (SSP) Schannel, aplikasi server harus meneruskan bendera ASC_REQ_MUTUAL_AUTH saat memanggil AcceptSecurityContext (Umum). Ini memastikan bahwa klien dimintai sertifikat klien selama jabat tangan SSL/TLS. Ketika sertifikat klien diterima, paket Schannel memverifikasi sertifikat klien dan mencoba memetakannya ke akun pengguna. Ketika pemetaan ini berhasil, maka token pengguna klien dibuat dan fungsi ini berhasil.
Server aplikasi harus memanggil fungsi RevertSecurityContext setelah selesai atau ketika perlu memulihkan konteks keamanannya sendiri.
ImpersonateSecurityContext tidak tersedia dengan semua paket keamanan di semua platform. Biasanya, ini hanya diimplementasikan pada platform dan dengan paket keamanan yang mendukung peniruan. Untuk mempelajari apakah paket keamanan mendukung peniruan identitas, panggil fungsi QuerySecurityPackageInfo .
- Tingkat peniruan token yang diminta kurang dari SecurityImpersonation, seperti SecurityIdentification atau SecurityAnonymous.
- Pemanggil memiliki hak istimewa SeImpersonatePrivilege .
- Proses (atau proses lain dalam sesi masuk pemanggil) membuat token menggunakan kredensial eksplisit melalui fungsi LogonUser atau LsaLogonUser .
- Identitas terautentikasi sama dengan pemanggil.
Windows XP: Hak istimewa SeImpersonatePrivilege tidak didukung sampai Windows XP dengan Paket Layanan 2 (SP2).
Persyaratan
Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | sspi.h (termasuk Security.h) |
Pustaka | Secur32.lib |
DLL | Secur32.dll |
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