Kami memiliki pengaturan IDAM yang sedikit rumit:
Yaitu mesin pengguna akhir dan browser duduk di satu jaringan dengan AD induk, dan aplikasi berbasis Jetty kami dan AD yang dapat berbicara dengan (AD lokal) duduk di yang lain.
Ada kepercayaan dua arah antara kedua iklan. Browser di jaringan induk memiliki domain lokal di situs tepercaya.
Pengaturan server Jetty adalah sebagai berikut:
- menggunakan file keytab yang dihasilkan terhadap prinsipal di AD lokal
- itu berjalan sebagai layanan Windows di bawah pengguna yang ditentukan dalam AD lokal
- ranah, pemetaan domain-ranah dan kdc didefinisikan terhadap domain AD lokal
- ia menggunakan spnego - isInitiator disetel ke false; doNotPrompt benar; storeKey benar
Masalahnya adalah:
- sebagai tes, mengakses server dari browser di dalam jaringan lokal (mis. tertaut ke AD lokal) berfungsi - info debug Kerberos muncul di log, saya bisa melihat negosiasi Kerberos yang benar dalam lalu lintas HTTP, dan pengguna masuk secara otomatis . Cemerlang.
namun , mengakses server dari browser di dalam jaringan induk (yang merupakan cara pengguna kami melakukan sesuatu) tidak berfungsi! Browser mendapat kembali 401 unauth tetapi kemudian meminta kredensial, yang ketika dimasukkan memberikan layar kosong. Kemudian mengklik ke bilah alamat dan menekan Enter melakukan salah satu dari dua hal, tergantung pada apakah kredensial untuk AD jarak jauh atau lokal:
- Kredensial AD lokal kemudian masuk dengan baik, dengan Kerberos dari awal di log (Dapatkan permintaan, 401 respons tidak sah, permintaan header Kerberos, dll)
- kredensial AD terpencil tidak login (permintaan GET, 401 respon unauth, apa yang tampak seperti header NTLM:
Authorization: Negotiate <60 or so random chars>
)
Apa pun itu, fakta bahwa dorongan itu salah!
Adakah penjelasan untuk gejala-gejala ini? Bisakah pengaturan yang kita lakukan melakukan apa yang kita inginkan?
Dalam hal bagaimana dengan uraian di atas bisa salah: konfigurasi apa pun yang saya sebutkan mengenai server Jetty harus akurat, seperti yang saya lakukan. Saya senang memberikan detail lebih lanjut. Konfigurasi apa pun mengenai AD atau browser jaringan induk berpotensi dicurigai, karena tidak di bawah kendali saya dan konfigurasi saya sudah dilaporkan kepada saya daripada melihatnya sendiri.
sumber
Jawaban:
Tanpa melihat tangkapan paket, saya kira SPN HTTP / www.website.com perlu didaftarkan ke akun yang menjalankan aplikasi. Tim Layanan Direktori Microsoft memiliki pos multi-bagian hebat yang membahas topik ini di URL berikut.
https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/
Jalankan tangkapan paket (netmon, wireshark) dari klien di setiap lingkungan untuk mengidentifikasi SPN apa yang sedang dicari. Setelah ditentukan, gunakan cmd setspn untuk mendaftarkannya ke akun yang menjalankan aplikasi.
FWIW, Kerberos hanya berfungsi saat di LAN. Jika seseorang membutuhkan akses di mana pengontrol domain tidak dapat diakses, maka Anda ingin mempertimbangkan SSO seperti Shibboleth atau ADFS.
EDIT: seperti yang disebutkan oleh @ alex-h , browser perlu dikonfigurasi untuk mengautentikasi secara diam-diam melalui Kerberos.
Terakhir, ini adalah masalah umum dengan penyebaran Microsoft Sharepoint. Mereka ingin SSO melalui Kerberos terjadi secara diam-diam setelah pengguna mengautentikasi ke domain. Jadi jika jawaban di atas tidak menyelesaikan masalah Anda, coba periksa forum mereka seperti berikut ini:
Kerberos di Chrome, Safari atau FireFox
sumber
Silakan coba ke-1 dari peramban yang tidak mengaktifkan NTLM (Chrome / Firefox). Tampaknya masalahnya adalah bahwa Anda telah mengaktifkan otentikasi awal dan mungkin saja kepercayaan dua arah itu mungkin tidak ada.
Untuk otentikasi awal, lihat di sini https://support.microsoft.com/en-us/kb/2749007 dan di sini https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html .
sumber