Fungsi AcceptSecurityContext (sspi.h)
Fungsi AcceptSecurityContext (CredSSP) memungkinkan komponen server aplikasi transportasi membangun konteks keamanan antara server dan klien jarak jauh. Klien jarak jauh memanggil fungsi InitializeSecurityContext (CredSSP) untuk memulai proses pembentukan konteks keamanan. Server dapat memerlukan satu atau beberapa token balasan dari klien jarak jauh untuk menyelesaikan pembuatan konteks keamanan.
KSECDDDECLSPEC SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
[in, optional] PCredHandle phCredential,
[in, optional] PCtxtHandle phContext,
[in, optional] PSecBufferDesc pInput,
[in] unsigned long fContextReq,
[in] unsigned long TargetDataRep,
[in, out, optional] PCtxtHandle phNewContext,
[in, out, optional] PSecBufferDesc pOutput,
[out] unsigned long *pfContextAttr,
[out, optional] PTimeStamp ptsExpiry
);
[in, optional] phCredential
Handel ke kredensial server. Untuk mengambil handel ini, server memanggil fungsi AcquireCredentialsHandle (CredSSP) dengan set bendera SECPKG_CRED_INBOUND atau SECPKG_CRED_BOTH.
[in, optional] phContext
Penunjuk ke struktur CtxtHandle . Pada panggilan pertama ke AcceptSecurityContext (CredSSP), pointer ini adalah NULL. Pada panggilan berikutnya, phContext menentukan konteks yang dibentuk sebagian yang dikembalikan dalam parameter phNewContext oleh panggilan pertama.
[in, optional] pInput
Penunjuk ke struktur SecBufferDesc yang dihasilkan oleh panggilan klien ke InitializeSecurityContext (CredSSP). Struktur berisi deskriptor buffer input.
Buffer pertama harus berjenis SECBUFFER_TOKEN dan berisi token keamanan yang diterima dari klien. Buffer kedua harus berjenis SECBUFFER_EMPTY.
[in] fContextReq
Bendera -Bit yang menentukan atribut yang diperlukan oleh server untuk menetapkan konteks. Bendera bit dapat digabungkan dengan menggunakan operasi bitwise-OR. Parameter ini bisa menjadi satu atau beberapa nilai berikut.
Nilai | Makna |
---|---|
|
Penyedia Dukungan Keamanan Kredensial (CredSSP) akan mengalokasikan buffer output. Setelah Anda selesai menggunakan buffer output, bebaskan dengan memanggil fungsi FreeContextBuffer . |
|
Konteks keamanan tidak akan menangani pesan pemformatan. |
|
Server diizinkan untuk meniru klien. Abaikan bendera ini untuk delegasi yang dibatasi. |
|
Ketika kesalahan terjadi, pihak jarak jauh akan diberi tahu. |
|
Mendeteksi paket yang diputar ulang. |
|
Mendeteksi pesan yang diterima secara tidak berurutan. |
|
Mendukung koneksi berorientasi aliran. |
Untuk kemungkinan bendera atribut dan maknanya, lihat Persyaratan Konteks. Bendera yang digunakan untuk parameter ini diawali dengan ASC_REQ, misalnya, ASC_REQ_DELEGATE.
Atribut yang diminta mungkin tidak didukung oleh klien. Untuk informasi selengkapnya, lihat parameter pfContextAttr .
[in] TargetDataRep
Representasi data, seperti pengurutan byte, pada target. Parameter ini dapat berupa SECURITY_NATIVE_DREP atau SECURITY_NETWORK_DREP.
[in, out, optional] phNewContext
Penunjuk ke struktur CtxtHandle . Pada panggilan pertama ke AcceptSecurityContext (CredSSP), pointer ini menerima handel konteks baru. Pada panggilan berikutnya, phNewContext dapat sama dengan handel yang ditentukan dalam parameter phContext .
[in, out, optional] pOutput
Penunjuk ke struktur SecBufferDesc yang berisi deskriptor buffer output. Buffer ini dikirim ke klien untuk dimasukkan ke dalam panggilan tambahan ke InitializeSecurityContext (CredSSP). Buffer output dapat dihasilkan meskipun fungsi mengembalikan SEC_E_OK. Setiap buffer yang dihasilkan harus dikirim kembali ke aplikasi klien.
Pada output, buffer ini menerima token untuk konteks keamanan. Token harus dikirim ke klien. Fungsi ini juga dapat mengembalikan buffer jenis SECBUFFER_EXTRA.
[out] pfContextAttr
Penunjuk ke sekumpulan bendera bit yang menunjukkan atribut konteks yang ditetapkan. Untuk deskripsi berbagai atribut, lihat Persyaratan Konteks. Bendera yang digunakan untuk parameter ini diawali dengan ASC_RET, misalnya, ASC_RET_DELEGATE.
Jangan periksa atribut terkait keamanan hingga panggilan fungsi akhir berhasil dikembalikan. Bendera atribut yang tidak terkait dengan keamanan, seperti bendera ASC_RET_ALLOCATED_MEMORY, dapat diperiksa sebelum pengembalian akhir.
[out, optional] ptsExpiry
Penunjuk ke struktur TimeStamp yang menerima waktu kedaluwarsa konteks. Kami menyarankan agar paket keamanan selalu mengembalikan nilai ini di waktu setempat.
Fungsi ini mengembalikan salah satu nilai berikut.
Mengembalikan kode/nilai | Deskripsi |
---|---|
|
Fungsi berhasil. Data dalam buffer input tidak lengkap. Aplikasi harus membaca data tambahan dari klien dan memanggil AcceptSecurityContext (CredSSP) lagi. |
|
Fungsi gagal. Tidak tersedia cukup memori untuk menyelesaikan tindakan yang diminta. |
|
Fungsi gagal. Terjadi kesalahan yang tidak memetakan ke kode galat SSPI. |
|
Fungsi gagal. Handel yang diteruskan ke fungsi tidak valid. |
|
Fungsi gagal. Token yang diteruskan ke fungsi tidak valid. |
|
Log masuk gagal. |
|
Fungsi gagal. Tidak ada otoritas yang dapat dihubungi untuk autentikasi. Ini bisa disebabkan oleh kondisi berikut:
|
|
Fungsi gagal. Handel kredensial yang ditentukan dalam parameter phCredential tidak valid. |
|
Fungsi berhasil. Konteks keamanan yang diterima dari klien diterima. Jika fungsi menghasilkan token output, token harus dikirim ke proses klien. |
|
Fungsi gagal. Parameter fContextReq menentukan bendera atribut konteks (ASC_REQ_DELEGATE atau ASC_REQ_PROMPT_FOR_CREDS) yang tidak valid. |
|
Fungsi berhasil. Server harus memanggil CompleteAuthToken dan meneruskan token output ke klien. Server kemudian harus menunggu token kembali dari klien sebelum melakukan panggilan lain ke AcceptSecurityContext (CredSSP). |
|
Fungsi berhasil. Server harus selesai membangun pesan dari klien sebelum memanggil CompleteAuthToken. |
|
Fungsi berhasil. Server harus mengirim token output ke klien dan menunggu token yang dikembalikan. Token yang dikembalikan harus diteruskan dalam pInput untuk panggilan lain ke AcceptSecurityContext (CredSSP). |
Fungsi AcceptSecurityContext (CredSSP) adalah rekan server untuk fungsi InitializeSecurityContext (CredSSP).
Ketika server menerima permintaan dari klien, server menggunakan parameter fContextReq untuk menentukan apa yang diperlukan sesi. Dengan cara ini, server dapat mengharuskan klien mampu menggunakan sesi rahasia atau pemeriksaan integritas; dapat menolak klien yang tidak dapat memenuhi permintaan tersebut. Atau, server tidak memerlukan apa pun; apa pun yang diperlukan atau dapat disediakan klien dikembalikan dalam parameter pfContextAttr .
Parameter fContextReq dan pfContextAttr adalah bitmask yang mewakili berbagai atribut konteks. Untuk deskripsi berbagai atribut, lihat Persyaratan Konteks.
Setelah konteks keamanan ditetapkan, aplikasi server dapat menggunakan fungsi QuerySecurityContextToken untuk mengambil handel ke akun pengguna tempat sertifikat klien dipetakan. Selain itu, server dapat menggunakan fungsi ImpersonateSecurityContext untuk meniru pengguna.
Klien minimum yang didukung | Windows Vista [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | sspi.h (termasuk Security.h) |
Pustaka | Secur32.lib |
DLL | Secur32.dll |