Keunikan SPN dan UPN
Penulis: Justin Turner, Teknisi Eskalasi Dukungan Senior dengan grup Windows
Catatan
Konten ini ditulis oleh teknisi dukungan pelanggan Microsoft, dan ditujukan untuk administrator berpengalaman dan arsitek sistem yang mencari penjelasan teknis yang lebih dalam tentang fitur dan solusi di Windows Server 2012 R2 daripada topik di TechNet biasanya disediakan. Namun, itu belum mengalami lolos pengeditan yang sama, sehingga beberapa bahasa mungkin tampak kurang dipoles daripada apa yang biasanya ditemukan di TechNet.
Gambaran Umum
Pengendali Domain yang menjalankan Windows Server 2012 R2 memblokir pembuatan nama perwakilan layanan duplikat (SPN) dan nama prinsipal pengguna (UPN). Ini termasuk jika pemulihan atau reanimasi objek yang dihapus atau penggantian nama objek akan menghasilkan duplikat.
Latar belakang
Nama Prinsipal Layanan Duplikat (SPN) umumnya terjadi dan mengakibatkan kegagalan autentikasi dan dapat menyebabkan pemanfaatan CPU LSASS yang berlebihan. Tidak ada metode dalam kotak untuk memblokir penambahan SPN atau UPN duplikat. *
Duplikat nilai UPN memutus sinkronisasi antara AD lokal dan Office 365.
*Setspn.exe umumnya digunakan untuk membuat SPN baru, dan secara fungsional dibangun ke dalam versi yang dirilis dengan Windows Server 2008 yang menambahkan pemeriksaan duplikat.
Tabel SEQ Tabel \* ARABIC 1: Keunikan UPN dan SPN
Fitur | Komentar |
---|---|
Keunikan UPN | UPN duplikat memutuskan sinkronisasi akun AD lokal dengan layanan berbasis ID Microsoft Entra seperti Office 365. |
Keunikan SPN | Kerberos memerlukan SPN untuk autentikasi bersama. SPN duplikat mengakibatkan kegagalan autentikasi. |
Untuk informasi selengkapnya tentang persyaratan keunikan untuk UPN dan SPN, lihat Batasan Keunikan.
Gejala
Kode kesalahan 8467 atau 8468 atau heks, simbolis, atau string yang setara dicatat dalam berbagai dialog di layar dan dalam peristiwa ID 2974 di log peristiwa Layanan Direktori. Upaya untuk membuat UPN atau SPN duplikat hanya diblokir dalam keadaan berikut:
- Penulisan diproses oleh DC Windows Server 2012 R2
Tabel SEQ Tabel \* ARABIC 2: Kode kesalahan keunikan UPN dan SPN
Decimal | Hex | Simbolis | String |
---|---|---|---|
8647 | 21C7 | ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST | Operasi gagal karena nilai SPN yang disediakan untuk penambahan/modifikasi tidak unik di seluruh forest. |
8648 | 21C8 | ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST | Operasi gagal karena nilai UPN yang disediakan untuk penambahan/modifikasi tidak unik di seluruh hutan. |
Pembuatan pengguna baru gagal jika UPN tidak unik
DSA.msc
Nama masuk pengguna yang Anda pilih sudah digunakan di perusahaan ini. Pilih nama log masuk lain, lalu coba lagi.
Ubah akun yang sudah ada:
Nama masuk pengguna yang ditentukan sudah ada di perusahaan. Tentukan yang baru, baik dengan mengubah awalan atau memilih akhiran yang berbeda dari daftar.
Pusat Administratif Direktori Aktif (DSAC.exe)
Upaya untuk membuat pengguna baru di Pusat Administratif Direktori Aktif dengan UPN yang sudah ada mengembalikan kesalahan berikut.
Gambar GAMBAR SEQ \* Kesalahan ARABIC 1 ditampilkan di Pusat Administratif AD saat pembuatan pengguna baru gagal karena UPN duplikat
Sumber Peristiwa 2974: ActiveDirectory_DomainService
Gambar Gambar SEQ \* ID Peristiwa ARABIC 2974 dengan kesalahan 8648
Peristiwa 2974 mencantumkan nilai yang diblokir dan daftar satu atau beberapa objek (hingga 10) yang sudah berisi nilai tersebut. Dalam gambar berikut, Anda dapat melihat bahwa nilai dhunt@blue.contoso.com atribut UPN sudah ada pada empat objek lain. Karena ini adalah fitur baru di Windows Server 2012 R2, pembuatan UPN dan SPN duplikat yang tidak disengaja di lingkungan campuran masih akan terjadi ketika DC tingkat bawah memproses upaya penulisan.
Gambar SEQ Gambar \* ARABIC 3 Peristiwa 2974 memperlihatkan semua objek yang berisi UPN duplikat
Tip
Tinjau ID peristiwa 2974 secara berkala untuk:
- mengidentifikasi upaya untuk membuat UPN atau SPN duplikat
- mengidentifikasi objek yang sudah berisi duplikat
8648 = "Operasi gagal karena nilai UPN yang disediakan untuk penambahan/modifikasi tidak unik di seluruh hutan."
SetSPN:
Setspn.exe memiliki deteksi SPN duplikat bawaan karena rilis Windows Server 2008 saat menggunakan opsi "-S ". Namun, Anda dapat melewati deteksi SPN duplikat dengan menggunakan opsi "-A ". Pembuatan SPN duplikat diblokir saat menargetkan DC Windows Server 2012 R2 menggunakan SetSPN dengan opsi -A. Pesan kesalahan yang ditampilkan sama dengan pesan yang ditampilkan saat menggunakan opsi -S: "SpN Duplikat ditemukan, operasi pembatalan!"
ADSIEDIT:
Operation failed. Error code: 0x21c8
The operation failed because UPN value provided for addition/modification is not unique forest-wide.
000021C8: AtrErr: DSID-03200BBA, #1: 0: 000021C8: DSID-03200BBA, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 90290 (userPrincipalName)
Gambar Gambar SEQ \* Pesan Kesalahan ARABIC 4 ditampilkan di ADSIEdit saat penambahan UPN duplikat diblokir
Windows PowerShell
Windows Server 2012 R2:
PowerShell yang berjalan dari Server 2012 menargetkan Windows Server 2012 R2 DC:
DSAC.exe berjalan pada Windows Server 2012 yang menargetkan Windows Server 2012 R2 DC:
Gambar GAMBAR SEQ \* Kesalahan pembuatan pengguna DSAC ARABIC 5 pada non-Windows Server 2012 R2 saat menargetkan Windows Server 2012 R2 DC
Gambar GAMBAR SEQ \* Kesalahan modifikasi pengguna DSAC ARABIC 6 pada non-Windows Server 2012 R2 saat menargetkan Windows Server 2012 R2 DC
Pemulihan objek yang akan mengakibatkan UPN duplikat gagal:
Tidak ada peristiwa yang dicatat ketika objek gagal dipulihkan karena UPN /SPN duplikat.
UPN objek harus unik agar dapat dipulihkan.
Identifikasi UPN yang ada pada objek di Keranjang Sampah
Mengidentifikasi semua objek yang memiliki nilai yang sama
Menghapus UPN duplikat
Identifikasi UPN yang bertentangan pada objek yang dihapusGunakan repadmin.exe
Repadmin /showattr DCName "DN of deleted objects container" /subtree /filter:"(msDS-LastKnownRDN=<NAME>)" /deleted /atts:userprincipalname
repadmin /showattr DCName "CN=Deleted Objects,DC=blue,DC=contoso,DC=com" /subtree /filter:"(msDS-LastKnownRDN=Dianne Hunt2)" /deleted /atts:userprincipalname
C:\>repadmin /showattr winbluedc1 "cn=deleted objects,dc=blue,dc=contoso,dc=com" /subtree /filter:"(msds-lastknownrdn=Dianne Hunt2)" /deleted /atts:userprincipalname
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Object
s,DC=blue,DC=contoso,DC=com
1> userPrincipalName: dhunt@blue.contoso.com
Untuk mengidentifikasi semua objek dengan UPN yang sama:Menggunakan Repadmin.exe
repadmin /showattr WinBlueDC1 "DC=blue,DC=contoso,DC=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
C:\>repadmin /showattr winbluedc1 "dc=blue,dc=contoso,dc=com" /subtree /filter:"(userPrincipalName=dhunt@blue.contoso.com)" /deleted /atts:DN
DN: CN=Administrator,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser1,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser10,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=xouser100,CN=Users,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt,OU=Marketing,DC=blue,DC=contoso,DC=com
DN: CN=Dianne Hunt2\0ADEL:dd3ab8a4-3005-4f2f-814f-d6fc54a1a1c0,CN=Deleted Objects,DC=blue,DC=contoso,DC=com
Tip
Parameter /deleted yang sebelumnya tidak terdokumentasi di repadmin.exe digunakan untuk menyertakan objek yang dihapus dalam tataan hasil
Menggunakan Pencarian Global
Buka Pusat Administratif Direktori Aktif dan navigasikan ke Pencarian Global
Pilih tombol radio Konversi ke LDAP
Jenis (userPrincipalName=ConflictingUPN)
- Ganti ConflictingUPN dengan UPN aktual yang berkonflik
Pilih Terapkan
Menggunakan Windows PowerShell
Get-ADObject -LdapFilter "(userPrincipalName=dhunt@blue.contoso.com)" -IncludeDeletedObjects -SearchBase "DC=blue,DC=Contoso,DC=com" -SearchScope Subtree -Server winbluedc1.blue.contoso.com
Jika objek perlu dipulihkan, Anda harus menghapus UPN duplikat dari objek lain. Hanya untuk satu objek, cukup mudah untuk menggunakan ADSIEdit untuk menghapus duplikat. Jika ada beberapa objek dengan duplikat, maka Windows PowerShell mungkin menjadi alat yang lebih baik untuk digunakan.
Untuk menghapus atribut UserPrincipalName menggunakan Windows PowerShell:
Catatan
Atribut userPrincipalName adalah atribut bernilai tunggal, sehingga prosedur ini hanya akan menghapus UPN duplikat.
SpN Duplikat
Gambar Gambar SEQ \* Pesan Kesalahan ARABIC 8 ditampilkan di ADSIEdit saat penambahan SPN duplikat diblokir
Masuk ke log peristiwa Layanan Direktori adalah ID peristiwa ActiveDirectory_DomainService 2974.
Operation failed. Error code: 0x21c7
The operation failed
The attribute value provided is not unique in the forest or partition. Attribute:
servicePrincipalName Value=<SPN>
<Object DN> Winerror: 8467
Gambar Gambar SEQ \* Kesalahan ARABIC 9 dicatat saat pembuatan SPN duplikat diblokir
Alur kerja
Jika DC == GC
Tidak diperlukan panggilan offbox, kueri dapat dipenuhi secara lokal
Kasus UPN
Mengkueri indeks UPN di seluruh hutan lokal untuk UPN yang disediakan (userPrincipalName; indeks global)
Jika entri dikembalikan == 0 -> tulis berlanjut
Jika entri dikembalikan !=0 -> penulisan gagal
Kejadian dicatat
Juga mengembalikan kesalahan yang diperluas:
8648:
ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST
Kasus SPN
Mengkueri indeks SPN di seluruh hutan lokal untuk SPN yang disediakan (servicePrincipalName; indeks global)
Jika entri dikembalikan == 0 -> tulis berlanjut
Jika entri dikembalikan !=0 -> penulisan gagal
Kejadian dicatat
Juga mengembalikan kesalahan yang diperluas:
8647:
ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST
Jika DC != GC
Panggilan offbox yang diinginkan tetapi tidak penting, yaitu, ini adalah pemeriksaan keunikan upaya terbaik
Periksa hasil terhadap DIT lokal hanya jika GC tidak dapat ditemukan
Peristiwa yang dicatat untuk menunjukkan
Kasus UPN
Kirim kueri LDAP terhadap GC terdekat? mengkueri indeks UPN di seluruh hutan GC untuk UPN yang disediakan (userPrincipalName; indeks global)
Jika entri dikembalikan == 0 -> tulis berlanjut
Jika entri dikembalikan !=0 -> penulisan gagal
Kejadian dicatat
Juga mengembalikan kesalahan yang diperluas:
8648:
ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST
Kasus SPN
Kirim kueri LDAP terhadap GC terdekat? mengkueri indeks SPN di seluruh hutan GC untuk SPN yang disediakan (servicePrincipalName; indeks global)
Jika entri dikembalikan == 0 -> tulis berlanjut
Jika entri dikembalikan !=0 -> penulisan gagal
Kejadian dicatat
Juga mengembalikan kesalahan yang diperluas:
8647:
ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST
Ketika objek yang dihapus direanimasi, nilai SPN atau UPN yang ada diperiksa keunikannya. Jika duplikat ditemukan, permintaan gagal.
Untuk perubahan atribut tertentu seperti Nama Host DNS, Nama Akun SAM, dll., ketika modifikasi dibuat, SPN diperbarui sesuai. Dalam prosesnya, SPN usang dihapus dan SPN baru dibangun dan ditambahkan ke database. Modifikasi atribut yang diperlukan di mana jalur ini dipicu adalah:
ATT_DNS_HOST_NAME
ATT_MS_DS_ADDITIONAL_DNS_HOST_NAME
ATT_SAM_ACCOUNT_NAME
ATT_MS_DS_ADDITIONAL_SAM_ACCOUNT_NAME
ATT_SERVER_REFERENCE_BL
ATT_USER_ACCOUNT_CONTROL
Jika salah satu nilai SPN baru adalah duplikat, kami gagal modifikasi. Dari daftar di atas, atribut penting adalah ATT_DNS_HOST_NAME (Nama mesin) dan ATT_SAM_ACCOUNT_NAME (Nama Akun SAM).
Coba Ini: Menjelajahi keunikan SPN dan UPN
Ini adalah yang pertama dari beberapa aktivitas "Coba Ini" dalam modul. Tidak ada panduan lab terpisah untuk modul ini. Aktivitas Coba Ini adalah aktivitas bentuk bebas yang memungkinkan Anda menjelajahi materi pelajaran di lingkungan lab. Anda memiliki opsi untuk mengikuti perintah atau keluar dari skrip dan membuat aktivitas Anda sendiri.
Catatan
- Ini adalah yang pertama dari beberapa aktivitas "Coba Ini".
- Tidak ada panduan lab terpisah untuk modul ini.
- Kegiatan Coba Ini pada dasarnya adalah kegiatan bentuk bebas yang memungkinkan Anda menjelajahi materi pelajaran di lingkungan lab.
- Anda memiliki opsi untuk mengikuti perintah atau keluar dari skrip dan membuat aktivitas Anda sendiri.
- Meskipun tidak semua bagian memiliki perintah Coba Ini , Anda masih dianjurkan untuk menjelajahi konten pelajaran di lab jika sesuai.
Bereksperimenlah dengan keunikan SPN dan UPN. Ikuti perintah ini, atau selesaikan perintah Anda sendiri.
Membuat pengguna baru dengan UPN
Membuat akun dengan SPN
Buat pengguna baru dengan UPN yang sudah ditentukan sebelumnya atau ubah UPN akun yang ada. Lakukan hal yang sama untuk SPN di akun lain
Mengisi akun pengguna yang sudah ada dengan UPN yang sudah digunakan
- Menggunakan PowerShell, ADSIEDIT, atau Pusat Administratif Direktori Aktif (DSAC.exe)
Mengisi akun yang sudah ada dengan SPN yang sudah digunakan
- Menggunakan Windows PowerShell, ADSIEDIT, atau SetSPN
Amati kesalahan
Opsional
Verifikasi dengan instruktur ruang kelas bahwa tidak masalah untuk mengaktifkan Keranjang Sampah AD di Pusat Administratif Direktori Aktif. Jika demikian, lanjutkan ke langkah berikutnya.
Mengisi UPN pada akun pengguna
Menghapus akun
Isi akun lain dengan UPN yang sama dengan akun yang dihapus
Mencoba menggunakan GUI Keranjang Sampah untuk memulihkan akun
Bayangkan Anda telah disajikan dengan kesalahan yang Anda lihat di langkah sebelumnya. (dan tidak memiliki riwayat langkah-langkah yang baru saja Anda lakukan) Tujuan Anda adalah menyelesaikan pemulihan akun. Lihat buku kerja, misalnya, langkah-langkah.