Bagikan melalui


Nama Utama

Agar klien dapat membuat sesi yang saling diautentikasi dengan program server, klien harus memberikan nama utama server yang diharapkan. Beberapa protokol, seperti Kerberos, memerlukan nama utama server yang benar untuk sesi yang diautentikasi. Prinsipal adalah entitas yang dikenali sistem keamanan. Ini termasuk pengguna manusia serta layanan sistem. Semua nama utama memiliki format serupa untuk penyedia dukungan keamanan (SSP) tertentu. SSP adalah modul perangkat lunak yang melakukan validasi keamanan. Untuk informasi selengkapnya, lihat Gambaran Umum Arsitektur SSPI. Untuk menjaga keseragaman, penyedia keamanan biasanya memberikan nama serupa layanan sistem sebagai pengguna. Di bawah beberapa penyedia keamanan, layanan sistem mungkin tidak memiliki nama utama.

Server mendaftarkan nama utamanya untuk penyedia keamanan menggunakan fungsi RpcServerRegisterAuthInfo . Hanya satu nama utama server yang dapat digunakan untuk setiap penyedia keamanan. Jika lebih dari satu nama terdaftar, satu nama dipilih dan digunakan secara acak. SSP menentukan format nama utama. Misalnya, SSP Kerberos/Negosiasi untuk layanan sistem terlihat seperti berikut: machine_name$@childdomain.parentdomain1.parentdomain2.COM.

Prosedur yang direkomendasikan untuk menghasilkan nama utama adalah menggunakan API yang di dokumentasikan (seperti fungsi DsMakeSpn ), daripada menyatukan nama utama dari string. Menggunakan API yang di dokumentasi meningkatkan portabilitas antara lingkungan penyebaran yang berbeda dan menghilangkan kemungkinan kesalahan.

Menentukan nama utama yang salah dapat mencegah klien dan server membuat sesi yang diautentikasi. SCHANNEL SSP mengambil nama utama dalam salah satu dari dua bentuk:

  • Formulir nama utama SCHANNEL pertama adalah bentuk msstd . Nama dalam bentuk msstd umumnya mengikuti pola msstd:servername@serverdomain.com. Ini disebut sebagai properti nama email. Jika sertifikat berisi properti nama email, dan berisi tanda (@), nama utamanya adalah msstd:nama email. Jika tidak, properti harus berisi properti nama umum. Garis miring terbalik internal digandakan, sama seperti dalam pengikatan string.
  • Formulir nama utama SCHANNEL kedua adalah bentuk fullsic . Ini adalah serangkaian nama yang mematuhi RFC1779 yang dibatasi oleh tanda kurung sudut dan dipisahkan oleh garis miring terbelakang. Biasanya mengikuti pola fullsic:\\<Authority\SubAuthority\.....\Person> or fullsic:\<\Authority\SubAuthority\.....\ServerProgram>.

Jika nama tidak cocok dengan sertifikat, ERROR_ACCESS_DENIED dikembalikan. Jika format nama tidak valid, SCHANNEL SSP mengembalikan kode ERROR_INVALID_PARAMETER.

Untuk mengkueri nama utama server, aplikasi dapat memanggil RpcMgmtInqServerPrincName. Ini mengalokasikan string yang dihentikan null untuk menahan nama utama. Sebelum dihentikan, aplikasi Anda harus memanggil RpcStringFree untuk merilis memori yang diduduki string ini.

Mengkueri nama server dengan cara ini tidak aman dan harus dihindari. Untuk autentikasi server, program klien harus mengetahui server mana yang tersambung dengannya dan harus membuat nama utama server dari awal.