Bagikan melalui


Nama Utama

Agar klien 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 mengambil 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 layanan sistem nama yang serupa dengan 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 kira-kira seperti berikut ini: machine_name$@childdomain.parentdomain1.parentdomain2.COM.

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

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

  • Formulir nama utama SCHANNEL pertama adalah formulirmsstd. 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 formulirfullsic. 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> atau 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 berakhir, aplikasi Anda harus memanggil RpcStringFree untuk merilis memori yang diduduki string ini.

Kueri untuk nama server dengan cara ini tidak aman dan harus dihindari. Untuk autentikasi server, program klien harus mengetahui server mana yang disambungkan dan harus membuat nama utama server dari awal.