Memecahkan masalah konfigurasi Delegasi Yang Dibatasi Kerberos (KCD) dengan proksi aplikasi Microsoft Entra

Metode akses menyeluruh bervariasi dari satu aplikasi ke aplikasi lainnya. Proksi aplikasi Microsoft Entra menyediakan Kerberos Constrained Delegation (KCD) secara default. Pengguna mengautentikasi ke aplikasi privat menggunakan Kerberos.

Artikel ini menyediakan satu titik referensi untuk memecahkan masalah yang paling umum. Ini juga mencakup diagnosis masalah implementasi yang lebih kompleks.

Artikel ini membuat asumsi berikut.

  • Penyebaran proksi aplikasi Microsoft Entra dan akses umum ke aplikasi non-KCD. Untuk informasi selengkapnya, lihat Mulai menggunakan proksi aplikasi.
  • Aplikasi yang diterbitkan didasarkan pada Layanan Informasi Internet (IIS) dan implementasi Microsoft Kerberos.
  • Host server dan aplikasi berada dalam satu domain Microsoft Entra. Untuk informasi selengkapnya tentang skenario lintas domain dan forest, lihat laporan resmi KCD.
  • Aplikasi diterbitkan di penyewa ID Microsoft Entra dengan pra-autentikasi diaktifkan. Pengguna diharapkan untuk mengautentikasi menggunakan autentikasi berbasis formulir. Skenario autentikasi klien yang kaya tidak dibahas oleh artikel ini.

Prasyarat

Kesalahan konfigurasi sederhana atau kesalahan umum menyebabkan sebagian besar masalah. Periksa semua prasyarat dalam Menggunakan akses menyeluruh KCD dengan proksi aplikasi sebelum pemecahan masalah.

Koneksi or host tidak dibatasi untuk komunikasi hanya dengan Pengontrol Domain (DC) situs lokal tertentu. Periksa DC yang digunakan karena dapat berubah.

Skenario lintas domain bergantung pada referensi yang mengarahkan host konektor ke DC yang mungkin berada di luar perimeter jaringan lokal. Dalam kasus ini, sama pentingnya untuk juga mengirim lalu lintas dan seterusnya ke DC yang mewakili masing-masing domain lain. Jika tidak, delegasi akan gagal.

Hindari perangkat Intrusion Prevention System (IPS) atau Intrusion Detection System (IDS) aktif antara host konektor dan DC. Perangkat ini terlalu mengganggu dan mengganggu lalu lintas Panggilan Prosedur Jarak Jauh (RPC) inti.

Uji delegasi dalam skenario sederhana. Semakin banyak variabel yang Anda perkenalkan, semakin banyak Anda mungkin harus bersaing. Untuk menghemat waktu, batasi pengujian Anda ke konektor tunggal. Tambahkan lebih banyak konektor setelah masalah diselesaikan.

Beberapa faktor lingkungan mungkin juga berkontribusi pada suatu masalah. Untuk menghindari faktor-faktor ini, minimalkan arsitektur sebanyak mungkin selama pengujian. Misalnya, Daftar Kontrol Akses (ACL) firewall internal yang salah dikonfigurasi adalah umum. Jika memungkinkan, kirim semua lalu lintas dari konektor langsung ke DC dan aplikasi back-end.

Tempat terbaik untuk memosisikan konektor sedekat mungkin dengan target mereka. Firewall yang berada sebaris saat pengujian menambahkan kompleksitas yang tidak perlu dan dapat memperpanjang penyelidikan Anda.

Apa yang menunjukkan masalah KCD? Ada beberapa indikasi umum bahwa akses menyeluruh KCD gagal. Tanda-tanda pertama masalah muncul di browser.

Cuplikan layar yang menunjukkan contoh kesalahan konfigurasi K C D yang salah, dengan kesalahan

Contoh: Otorisasi gagal karena izin hilang

Kedua gambar menunjukkan gejala yang sama: kegagalan akses menyeluruh. Akses pengguna ke aplikasi ditolak.

Pemecahan Masalah

Pisahkan pemecahan masalah ke dalam tiga tahap.

Pra-autentikasi klien

Pengguna eksternal yang mengautentikasi melalui browser. Kemampuan untuk melakukan pra-autentikasi ke MICROSOFT Entra ID diperlukan agar akses menyeluruh (SSO) KCD berfungsi. Uji dan atasi kemampuan ini jika ada masalah. Tahap pra-autentikasi tidak terkait dengan KCD atau aplikasi yang diterbitkan. Sangat mudah untuk memperbaiki perbedaan apa pun dengan memeriksa bahwa akun subjek ada di ID Microsoft Entra. Periksa apakah aplikasi tidak dinonaktifkan atau diblokir. Respons kesalahan di browser cukup deskriptif untuk menjelaskan penyebabnya.

Layanan delegasi

Konektor jaringan privat yang mendapatkan tiket layanan Kerberos untuk pengguna dari Kerberos Key Distribution Center (KCD).

Komunikasi eksternal antara klien dan ujung depan Azure tidak memiliki bantalan pada KCD. Komunikasi ini hanya memastikan KCD berfungsi. Layanan proksi aplikasi diberikan ID pengguna valid yang digunakan untuk mendapatkan tiket Kerberos. Tanpa ID ini, KCD tidak memungkinkan dan gagal.

Pesan kesalahan browser memberikan beberapa petunjuk yang baik tentang mengapa hal-hal gagal. activity ID Rekam bidang dan timestamp dalam respons. Informasi ini membantu menghubungkan perilaku dengan peristiwa aktual di log peristiwa proksi aplikasi.

Contoh: Kesalahan konfigurasi KCD yang salah

Entri yang sesuai terlihat dalam log peristiwa ditampilkan sebagai peristiwa 13019 atau 12027. Temukan log peristiwa konektor di Log>Aplikasi dan Layanan Jaringan> privat Microsoft Microsoft>Entra Koneksi or>Admin.

  1. Gunakan catatan A di Sistem Nama Domain (DNS) internal Anda untuk alamat aplikasi, bukan CName.
  2. Konfirmasi ulang bahwa host konektor memiliki hak untuk mendelegasikan ke Nama Perwakilan Layanan (SPN) akun target yang ditunjuk. Konfirmasi ulang bahwa Gunakan protokol autentikasi dipilih. Untuk informasi selengkapnya, lihat artikel konfigurasi SSO.
  3. Verifikasi bahwa hanya ada satu instans SPN yang ada di ID Microsoft Entra. Terbitkan setspn -x dari prompt perintah di host anggota domain.
  4. Pastikan kebijakan domain diberlakukan yang membatasi ukuran maksimum token Kerberos yang diterbitkan. Kebijakan menghentikan konektor mendapatkan token jika berlebihan.

Jejak jaringan yang menangkap pertukaran antara host konektor dan domain Kerberos Constrained Delegation (KDC) adalah langkah terbaik berikutnya untuk mendapatkan detail tingkat yang lebih rendah tentang masalah tersebut. Untuk informasi selengkapnya, lihat menyelami makalah Pemecahan Masalah.

Jika tiket terlihat bagus, Anda akan melihat peristiwa di log yang menyatakan bahwa autentikasi gagal karena aplikasi mengembalikan 401. Peristiwa ini menunjukkan bahwa aplikasi target menolak tiket Anda. Masuk ke tahap berikutnya.

Aplikasi target

Konsumen tiket Kerberos yang disediakan konektor. Pada tahap ini, harapkan konektor mengirim tiket layanan Kerberos ke ujung belakang. Tiket adalah header dalam permintaan aplikasi pertama.

  1. Dengan menggunakan URL internal aplikasi yang ditentukan di portal, validasi bahwa aplikasi dapat diakses langsung dari browser pada host konektor. Kemudian Anda akan berhasil masuk. Detail dapat ditemukan di halaman Pemecahan Masalah konektor.

  2. Konfirmasikan bahwa autentikasi antara browser dan aplikasi menggunakan Kerberos.

  3. Jalankan DevTools (F12) di Internet Explorer, atau gunakan Fiddler dari host konektor. Buka aplikasi dengan menggunakan URL internal. Untuk memastikan bahwa ada negosiasi atau Kerberos, periksa header otorisasi web yang ditawarkan yang dikembalikan dalam respons dari aplikasi.

    • Blob Kerberos berikutnya yang dikembalikan dalam respons dari browser ke aplikasi dimulai dengan YII. Huruf-huruf ini memberitahu Anda bahwa Kerberos sedang berjalan. Microsoft NT LAN Manager (NTLM), di sisi lain, selalu dimulai dengan TlRMTVNTUAAB, yang membaca NTLM Security Support Provider (NTLMSSP) ketika dikodekan dari Base64. Jika Anda melihat TlRMTVNTUAAB di awal blob, Kerberos tidak tersedia. Jika Anda tidak melihat TlRMTVNTUAAB, Kerberos kemungkinan tersedia.

      Catatan

      Jika Anda menggunakan Fiddler, metode ini mengharuskan Anda menonaktifkan perlindungan yang diperpanjang untuk sementara pada konfigurasi aplikasi di IIS.

      Jendela inspeksi jaringan browser

    • Blob dalam angka ini tidak dimulai dengan TIRMTVNTUAAB. Jadi dalam contoh ini, Kerberos tersedia, dan blob Kerberos tidak dimulai dengan YII.

  4. Hapus NTLM untuk sementara dari daftar penyedia di situs IIS. Akses aplikasi langsung dari Internet Explorer di host konektor. NTLM tidak lagi ada dalam daftar penyedia. Anda dapat mengakses aplikasi hanya dengan menggunakan Kerberos. Jika akses gagal, mungkin ada masalah dengan konfigurasi aplikasi. Autentikasi Kerberos tidak berfungsi.

    • Jika Kerberos tidak tersedia, periksa pengaturan autentikasi aplikasi di IIS. Pastikan Negosiasi tercantum di bagian atas, dengan NTLM tepat di bawahnya. Jika Anda melihat Bukan Negosiasi, Kerberos atau Negosiasi, atau PKU2U, lanjutkan hanya jika Kerberos bersifat fungsional.

      Penyedia autentikasi Windows

    • Dengan Kerberos dan NTLM di tempat, nonaktifkan praautomatisasi untuk aplikasi di portal untuk sementara waktu. Cobalah untuk mengaksesnya dari internet dengan menggunakan URL eksternal. Anda diminta untuk mengautentikasi. Anda dapat melakukannya dengan akun yang sama dengan yang digunakan pada langkah sebelumnya. Jika tidak, ada masalah dengan aplikasi back-end, bukan KCD.

    • Aktifkan kembali praauthentication di portal. Autentikasi melalui Azure dengan mencoba menyambungkan ke aplikasi melalui URL eksternalnya. Jika SSO gagal, Anda akan melihat pesan kesalahan terlarang di browser dan peristiwa 13022 di log:

      Konektor jaringan privat Microsoft Entra tidak dapat mengautentikasi pengguna karena server backend merespons upaya autentikasi Kerberos dengan kesalahan HTTP 401.

      Menampilkan kesalahan terlarang HTTTP 401

    • Periksa aplikasi IIS. Pastikan bahwa kumpulan aplikasi yang dikonfigurasi dan SPN dikonfigurasi untuk menggunakan akun yang sama di ID Microsoft Entra. Navigasikan di IIS seperti yang diperlihatkan dalam ilustrasi berikut.

      Jendela konfigurasi aplikasi IIS

      Setelah Mengetahui identitasnya, pastikan akun ini dikonfigurasi dengan SPN yang bersangkutan. Contohnya setspn –q http/spn.wacketywack.com. Masukkan teks berikut dalam prompt perintah.

      Menampilkan jendela perintah SetSPN

    • Periksa SPN yang ditentukan terhadap pengaturan aplikasi di portal. Pastikan bahwa SPN yang sama yang dikonfigurasi terhadap akun Microsoft Entra target digunakan oleh kumpulan aplikasi aplikasi.

    • Masuk ke IIS dan pilih opsi Editor Konfigurasi untuk aplikasi. Navigasi ke system.webServer/security/authentication/windowsAuthentication. Pastikan nilai UseAppPoolCredentials adalah True.

      Opsi kredensial kelompok aplikasi konfigurasi IIS

      Ubah nilai menjadi True. Hapus semua tiket Kerberos yang di-cache dari server back-end dengan menjalankan perintah .

      Get-WmiObject Win32_LogonSession | Where-Object {$_.AuthenticationPackage -ne 'NTLM'} | ForEach-Object {klist.exe purge -li ([Convert]::ToString($_.LogonId, 16))}
      

Jika Anda membiarkan mode Kernel diaktifkan, ini meningkatkan kinerja operasi Kerberos. Tetapi juga menyebabkan tiket untuk layanan yang diminta didekripsi dengan menggunakan akun mesin. Akun ini juga disebut sistem Lokal. Atur nilai ini ke True untuk memecahkan KCD saat aplikasi di-host di lebih dari satu server di sebuah farm.

  • Sebagai pemeriksaan lain, nonaktifkan Perlindungan yang diperluas juga. Dalam beberapa skenario, perlindungan yang Diperpanjang melanggar KCD saat diaktifkan dalam konfigurasi tertentu. Dalam kasus tersebut, aplikasi dipublikasikan sebagai subfolder situs web default. Aplikasi ini dikonfigurasi hanya untuk autentikasi anonim. Semua dialog berwarna abu-abu, yang menyarankan objek anak tidak akan mewarisi pengaturan aktif. Sebaiknya Anda menguji, tetapi jangan lupa untuk memulihkan nilai ini agar diaktifkan, jika memungkinkan.

    Pemeriksaan tambahan ini menempatkan Anda di jalur untuk menggunakan aplikasi yang diterbitkan. Anda dapat memutar lebih banyak konektor yang juga dikonfigurasi untuk mendelegasikan. Untuk informasi selengkapnya, baca panduan teknis yang lebih mendalam, Memecahkan masalah proksi aplikasi Microsoft Entra.

Jika Anda masih tidak dapat membuat kemajuan, dukungan Microsoft dapat membantu Anda. Buat tiket dukungan langsung di dalam portal.

Skenario lain

Proksi aplikasi Microsoft Entra meminta tiket Kerberos sebelum mengirim permintaannya ke aplikasi. Beberapa aplikasi tidak menyukai metode autentikasi ini. Aplikasi ini mengharapkan negosiasi yang lebih konvensional terjadi. Permintaan pertama bersifat anonim, yang memungkinkan aplikasi merespons dengan jenis autentikasi yang didukungnya melalui 401. Jenis negosiasi Kerberos ini dapat diaktifkan menggunakan langkah-langkah yang diuraikan dalam dokumen ini: Delegasi yang Dibatasi Kerberos untuk masuk tunggal.

Autentikasi multi-hop umumnya digunakan dalam skenario di mana aplikasi berjenjang. Tingkatan mencakup ujung belakang dan ujung depan. Kedua tingkatan memerlukan autentikasi. Misalnya, SQL Server Reporting Services. Untuk informasi selengkapnya, lihat Cara mengonfigurasi Delegasi Yang Dibatasi Kerberos untuk halaman proksi Pendaftaran Web.

Langkah berikutnya

Mengonfigurasi KCD pada domain terkelola.