Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Fungsi ImpersonateLoggedOnUser memungkinkan utas panggilan meniru konteks keamanan pengguna yang masuk. Pengguna diwakili oleh handel token.
Syntax
BOOL ImpersonateLoggedOnUser(
[in] HANDLE hToken
);
Parameter-parameternya
[in] hToken
Handel ke token akses utama atau peniruan yang mewakili pengguna yang masuk. Ini bisa menjadi handel token yang dikembalikan oleh panggilan ke fungsi LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken, atau OpenThreadToken . Jika hToken adalah handel ke token utama, token harus memiliki akses TOKEN_QUERY dan TOKEN_DUPLICATE . Jika hToken adalah handel token peniruan, token harus memiliki akses TOKEN_QUERY dan TOKEN_IMPERSONATE .
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, panggil GetLastError.
Komentar
Peniruan berlangsung hingga utas keluar atau sampai memanggil RevertToSelf.
Utas panggilan tidak perlu memiliki hak istimewa tertentu untuk memanggil ImpersonateLoggedOnUser.
Jika panggilan ke ImpersonateLoggedOnUser gagal, koneksi klien tidak ditiru dan permintaan klien dibuat dalam konteks keamanan proses. Jika proses berjalan sebagai akun yang sangat istimewa, seperti LocalSystem, atau sebagai anggota grup administratif, pengguna mungkin dapat melakukan tindakan yang jika tidak diizinkan. Oleh karena itu, penting untuk selalu memeriksa nilai pengembalian panggilan, dan jika gagal, munculkan kesalahan; jangan melanjutkan eksekusi permintaan klien.
Semua fungsi peniruan, termasuk ImpersonateLoggedOnUser memungkinkan peniruan yang diminta jika salah satu hal berikut ini benar:
- 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.
Penting
Token harus memiliki tingkat peniruan SecurityImpersonation atau yang lebih tinggi agar peniruan berhasil. Token dengan tingkat SecurityIdentification atau SecurityAnonymous tidak dapat digunakan untuk peniruan, bahkan jika pemanggil memiliki SeImpersonatePrivilege. Token SecurityIdentification memungkinkan verifikasi identitas dan pemeriksaan ACL tetapi tidak mengizinkan peniruan identitas.
Persyaratan Tingkat Peniruan
Perilaku bervariasi berdasarkan tingkat peniruan token:
- SecurityAnonymous: Server tidak dapat memperoleh informasi identitas klien dan tidak dapat meniru klien.
- SecurityIdentification: Server dapat memperoleh identitas klien dan melakukan validasi akses, tetapi tidak dapat meniru klien. Ini adalah tingkat default untuk banyak skenario.
- SecurityImpersonation: Server dapat meniru konteks keamanan klien pada sistem lokal. Ini adalah tingkat minimum yang diperlukan agar ImpersonateLoggedOnUser berhasil.
- SecurityDelegation: Server dapat meniru klien pada sistem jarak jauh serta secara lokal.
Windows XP dengan SP1 dan yang lebih lama: Hak istimewa SeImpersonatePrivilege tidak didukung.
Untuk informasi selengkapnya tentang peniruan identitas, lihat Peniruan Identitas Klien.
Persyaratan
| Persyaratan | Nilai |
|---|---|
| Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
| Platform Target | Windows |
| Header | securitybaseapi.h (termasuk Windows.h) |
| Library | Advapi32.lib |
| DLL | Advapi32.dll |
Lihat juga
Fungsi Kontrol Akses Klien/Server