Bagikan melalui


Fungsi DsWriteAccountSpnA (ntdsapi.h)

Fungsi DsWriteAccountSpn menulis array nama prinsipal layanan (SPN) ke atribut servicePrincipalName dari objek akun pengguna atau komputer tertentu di Active Directory Domain Services. Fungsi ini dapat mendaftar atau membatalkan pendaftaran SPN.

Sintaks

NTDSAPI DWORD DsWriteAccountSpnA(
  [in] HANDLE          hDS,
  [in] DS_SPN_WRITE_OP Operation,
  [in] LPCSTR          pszAccount,
  [in] DWORD           cSpn,
  [in] LPCSTR          *rpszSpn
);

Parameter

[in] hDS

Berisi handel layanan direktori yang diperoleh dari fungsi DSBind atau DSBindWithCred .

[in] Operation

Berisi salah satu nilai DS_SPN_WRITE_OP yang menentukan operasi yang akan dilakukan DsWriteAccountSpn .

[in] pszAccount

Penunjuk ke string konstanta yang dihentikan null yang menentukan nama khusus objek pengguna atau komputer di Active Directory Domain Services. Pemanggil harus memiliki akses tulis ke properti servicePrincipalName dari objek ini.

[in] cSpn

Menentukan jumlah SPN dalam rpszSpn. Jika nilai ini nol, dan Operasi berisi DS_SPN_REPLACE_SPN_OP, fungsi akan menghapus semua nilai dari atribut servicePrincipalName dari akun yang ditentukan.

[in] rpszSpn

Penunjuk ke array string konstanta yang dihentikan null yang menentukan SPN yang akan ditambahkan atau dihapus dari akun yang diidentifikasi oleh parameter pszAccount . Fungsi DsGetSpn digunakan untuk menyusun SPN untuk layanan.

Mengembalikan nilai

Mengembalikan ERROR_SUCCESS jika berhasil atau Win32, RPC, atau kesalahan layanan direktori jika tidak berhasil.

Keterangan

Fungsi DsWriteAccountSpn mendaftarkan SPN untuk satu atau beberapa instans layanan. SPN digunakan oleh klien, bersama dengan layanan autentikasi tepercaya, untuk mengautentikasi layanan. Untuk melindungi dari serangan keamanan di mana aplikasi atau layanan secara penipuan mendaftarkan SPN yang mengidentifikasi beberapa layanan lain, DACL default pada akun pengguna dan komputer hanya memungkinkan administrator domain untuk mendaftarkan SPN dalam banyak kasus.

Salah satu pengecualian untuk aturan ini adalah bahwa layanan yang berjalan di bawah akun LocalSystem dapat memanggil DsWriteAccountSpn untuk mendaftarkan SPN sederhana dari formulir "ServiceClass/Host:Port" jika host yang ditentukan dalam SPN adalah nama DNS atau NetBIOS komputer tempat layanan berjalan.

Pengecualian lain adalah bahwa DACL default pada akun komputer memungkinkan penelepon untuk mendaftarkan SPN pada diri mereka sendiri, tunduk pada batasan tertentu. Misalnya, akun komputer dapat memiliki SPN relatif terhadap nama komputernya, dari formulir "host/<computername>". Karena nama komputer terkandung dalam SPN, SPN diperbolehkan.

Tidak ada aturan di atas yang berlaku jika DSA dikonfigurasi untuk memungkinkan SPN ditulis. Namun, ini mengurangi keamanan, sehingga tidak disarankan.

SPN yang diteruskan ke DsWriteAccountSpn sebenarnya ditambahkan ke atribut Service-Principal-Name objek komputer di pszAccount. Panggilan ini dilakukan menggunakan RPC ke pengendali domain tempat objek akun disimpan sehingga dapat dengan aman memberlakukan kebijakan tentang SPN apa yang diizinkan di akun. Menggunakan LDAP untuk menulis langsung ke properti SPN tidak diperbolehkan; semua tulisan harus melalui panggilan RPC ini. Bacaan menggunakan LDAP diperbolehkan.

Izin yang diperlukan untuk mengatur SPN

Untuk menulis SPN arbitrer pada akun, penulis memerlukan hak "Write ServicePrincipalName", yang tidak diberikan secara default kepada orang yang membuat akun. Orang itu memiliki hak 'Tulis SPN yang divalidasi" (hanya ada di akun mesin).

Di bawah ini adalah ringkasan hak per pengguna pada akun mesin:

Jenis pengguna Hak
Orang yang membuat Akun Menulis SPN yang divalidasi
Operator Akun Tulis SPN dan Tulis SPN Yang Divalidasi
Pengguna yang Diautentikasi Tidak ada
(mandiri) Tulis SPN Yang Divalidasi
 

Pada akun pengguna tidak ada properti "SPN tervalidasi" atau hak "Tulis SPN". Sebaliknya, kumpulan properti "Tulis informasi publik" memberikan kemampuan untuk membuat SPN arbitrer.

Catatan

Header ntdsapi.h mendefinisikan DsWriteAccountSpn sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Target Platform Windows
Header ntdsapi.h
Pustaka Ntdsapi.lib
DLL Ntdsapi.dll

Lihat juga

DS_SPN_WRITE_OP

Fungsi Pengendali Domain dan Manajemen Replikasi

DsBind

DsBindWithCred

DsGetSpn