Membuat Layanan Python ke Atribut AD Query
Saya mengintegrasikan AD kami dengan layanan web yang menjalankan Python di linux menggunakan Python-LDAP melalui SASL (DIGEST-MD5) untuk meminta atribut pengguna AD 2012 (divisi, departemen, ekstensi telepon, email, dll). Setelah mengerjakan kinks khusus untuk layanan saya terhadap AD 2003 saya mulai mengalami kesalahan SPN terhadap AD 2012 baru kami, bahwa digest-uri tidak cocok dengan SPNs apa pun di server. Saya telah mereferensikan daftar SPN untuk kedua server dan mereka berisi analog yang identik satu sama lain.
Kesalahan: Intisari-uri tidak cocok dengan LDAP SPN mana pun yang terdaftar untuk server ini
Memperbaiki?
Ini diperbaiki dengan menjalankan:
setspn -A ldap/<Domain_Name> <Computer_Name>
Perhatikan bahwa membuat akun layanan tidak memperbaiki kesalahan SPN saya bahkan ketika perintah berikut dijalankan:
setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>
simple_bind_s () tidak perlu SPN, sasl_interactive_bind_s () membutuhkan SPN
Hanya menambahkan SPN ke daftar lokal mesin SPN bekerja untuk layanan Python-LDAP saya menggunakan sasl_interactive_bind_s (). Saya juga harus mencatat bahwa langkah SPN dapat dilewati jika saya menggunakan simple_bind_s () tetapi metode ini mengirimkan kredensial dalam cleartext yang tidak dapat diterima.
Namun saya perhatikan bahwa catatan tersebut hanya berada pada daftar SPN selama sekitar satu menit sebelum menghilang? Tidak ada kesalahan ketika saya menjalankan perintah setspn, log peristiwa benar-benar kosong, tidak ada duplikat di mana pun, diperiksa dengan pencarian hutan -F di pangkalan dn dan tidak ada. Saya telah menambahkan dan mencoba menambahkan kembali dan menghapus dan memindahkan SPN dari objek ke objek untuk memverifikasi bahwa itu tidak bersembunyi di mana pun, tetapi yang kedua saya menambahkan objek di mana saja dan kemudian mencoba untuk menambahkannya kembali memberitahukan saya tentang duplikat. Jadi saya sangat yakin bahwa tidak ada duplikat yang tersembunyi di suatu tempat.
Peretasan
Untuk sekarang saya punya tugas terjadwal menjalankan kembali perintah untuk menyimpan catatan pada daftar sehingga layanan saya akan bekerja dengan tepat bernama "Hack SPN"
cmd.exe /C "setspn -A ldap/<Domain_Name> <Computer_Name>"
sampai saya bisa mengetahui mengapa SPN sedang dibersihkan dari daftar.
Saya bukan administrator utama untuk AD khusus ini, dapatkah admin menjalankan layanan yang menyinkronkan SPN dari layanan lain pada AD dan tidak menyadarinya? Judul saya adalah Pengembang Web, bukan sebagai alasan tetapi untuk menjelaskan ketidaktahuan saya untuk masalah Active Directory. Saya telah diberitahu untuk menjadikan AD sebagai pengguna utama DB dan saya telah membaca banyak tetapi saya tidak dapat menemukan tempat di mana orang-orang mengalami masalah dengan SPN yang 'ditimpa' atau 'dibersihkan' secara berkala dan tidak ada admin sangat akrab dengan SPN di luar entri SQLServer.
Mengapa saya perlu retas?
Sejauh ini peretasan saya tampaknya tidak menimbulkan masalah bagi pengguna atau layanan apa pun dan belum menghasilkan kesalahan, jadi admin mengatakan ia akan membiarkannya berjalan dan saya akan terus mencari. Tapi kemudian saya menemukan diri saya dalam situasi genting menulis layanan yang implementasinya dibangun, pada dasarnya cron hack / shiver ... Jadi, bantuan apa pun akan dihargai.
Memperbarui
Setelah percakapan dengan sysadmin, dia setuju bahwa membangun layanan di atas peretasan bukanlah solusi, karena itu dia memberi saya izin untuk memutar layanan lokal dengan enkripsi titik akhir yang dapat saya gunakan untuk tujuan saya, hasilnya sama . Saya akan mengawasi apa yang menyebabkan SPN hilang. Binding lokal bukan masalah menggunakan Python-LDAP dan layanan lokal sudah berjalan setelah sekitar satu jam. Sangat disayangkan bahwa saya pada dasarnya membungkus fungsionalitas yang dibangun ke dalam LDAP tetapi kami melakukan apa yang harus kami lakukan.