Bagikan melalui


Inisialisasi Mode Pengguna

Aplikasi terdistribusi (klien/server) menggunakan paket keamanan untuk mendapatkan koneksi terautentikasi dan untuk bertukar pesan. Aplikasi ini memanggil fungsi antarmuka penyedia dukungan keamanan (SSPI) yang dipetakan ke fungsi yang diterapkan oleh SSP/APs, dan fungsi yang diterapkan oleh SSP/APs mode Pengguna. Pemetaan ini dilakukan oleh DLL penyedia keamanan (Secur32.dll atau Security.dll), yang dapat dimuat ke dalam proses klien dan server secara dinamis. DLL juga dapat ditautkan secara statis menggunakan Secur32.lib. DLL dan LIB dikirim dengan Microsoft Windows Software Development Kit (SDK).

Memuat paket keamanan ke dalam proses klien atau server ditangani oleh sistem, jika DLL SSP/AP yang berisi paket keamanan terdaftar dengan benar.

Server memulai proses mendapatkan koneksi aman dengan klien dengan memantau port, menunggu klien mengirim pesan. Klien memulai proses mendapatkan koneksi aman ke server dengan memanggil fungsi SSPI InitializeSecurityContext (Umum). Fungsi ini dipetakan ke fungsi SpInitLsaModeContext paket keamanan kustom. SpInitLsaModeContext mengembalikan token ke klien, yang meneruskannya ke server.

Setelah menerima token dari klien, server memanggil fungsi SSPI AcceptSecurityContext (Umum), yang dikirim ke fungsi SpAcceptLsaModeContext paket keamanan. Jika fungsi SpAcceptLsaModeContext berhasil dan tidak ada lagi pemrosesan yang diperlukan untuk menetapkan konteks keamanan, fungsi harus mengembalikan STATUS_SUCCESS ke pemanggil. Jika pemrosesan tambahan diperlukan, fungsi harus mengembalikan SEC_I_CONTINUE_NEEDED, dan mengembalikan token ke server. Server meneruskan token ke klien, yang memanggil InitializeSecurityContext (Umum) lagi.

Siklus panggilan ini dapat diulang sesering yang diperlukan sampai koneksi terautentikasi dibuat atau gagal. Selama proses ini, jika fungsi SpAcceptLsaModeContext atau SpInitLsaModeContext berhasil dan tidak ada lagi pemrosesan yang diperlukan untuk menetapkan konteks keamanan, fungsi harus mengembalikan STATUS_SUCCESS ke pemanggil. Jika pemrosesan tambahan diperlukan, fungsi harus mengembalikan SEC_I_CONTINUE_NEEDED, dan mengembalikan token ke pemanggil, yang bertanggung jawab untuk meneruskannya.

Protokol yang diterapkan oleh paket keamanan menentukan berapa kali siklus ini diulang. Misalnya, dalam paket keamanan yang mendukung autentikasi timbal balik tiga kaki, urutan panggilan adalah sebagai berikut:

  1. Klien mendapatkan token dengan memanggil InitializeSecurityContext (Umum), dan mengirimkannya ke server. Server memanggil AcceptSecurityContext (Umum) untuk pertama kalinya, dan mendapatkan kembali token balasan yang dikirimnya ke klien.
  2. Klien menggunakan token yang diterima dari server dalam panggilan kedua ke InitializeSecurityContext (Umum), dan mendapatkan kembali token akhir. Klien mengirimkan token ini ke server.
  3. Server menerima token yang dihasilkan pada leg 2 yang digunakannya dalam panggilan akhir ke AcceptSecurityContext (Umum).

Ketika fungsi SpAcceptLsaModeContext dan SpInitLsaModeContext berhasil dan tidak ada lagi pemrosesan yang diperlukan untuk menetapkan konteks keamanan, fungsi harus mengembalikan STATUS_SUCCESS ke pemanggil. Selain itu, jika paket keamanan kustom mendukung fungsi yang diterapkan oleh SSP/APs mode pengguna, SpAcceptLsaModeContext dan SpInitLsaModeContext harus mengembalikan TRUE dengan cara parameter MappedContext . Nilai MappedContext tidak diteruskan kembali ke aplikasi; itu dicegat oleh LSA.

Ketika MappedContextbenar, LSA memanggil fungsi SpUsermodeInitialize SSP/AP DLL. Fungsi ini menyediakan tabel penunjuk ke fungsi mode pengguna yang diterapkan oleh setiap paket keamanan. Fungsi SpInstanceInit setiap paket dipanggil, menggunakan tabel fungsi yang dikembalikan oleh SpUsermodeInitialize. SpInstanceInit menerima tabel penunjuk ke fungsi LSA yang dipanggil oleh SSP/APs mode pengguna.