Ada tiga nama dalam konfigurasi SPNEGO Jetty: URI yang dipakai untuk mencocokkan autentikasi, pengguna yang masuk melalui JAAS, dan layanan yang dimintakan tiket. Ketiganya punya tujuan berbeda.

Untuk implementasi Jetty 12.0.x, potongan objek autentikasi adalah:

var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
    java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");

Potongan ini menggambarkan komponen layanan, bukan resep autentikasi proxy yang lengkap. Login JAAS, perutean proxy, dan pertukaran autentikasi permintaan tetap terpisah.

Dalam implementasi ini Jetty membangun nama GSS berbasis host dengan menggabungkan getServiceName(), karakter @, dan host untuk pertukaran autentikasi. Memberikan [email protected] sebagai komponen layanan akan menambahkan host lain. Baca kontrak setter ini alih-alih menganggapnya menerima principal Kerberos lengkap.

Nama GSS yang dihasilkan berbentuk konseptual HTTP@hostname. Principal layanan KDC yang bersesuaian biasanya direpresentasikan sebagai HTTP/hostname. nama proxy yang dipilih harus cocok dengan layanan yang benar-benar terdaftar untuk akun itu; alamat IP atau alias dapat memilih target tiket lain.

Periksa juga jalur 407

Di Jetty 12.0.x, authenticate() mengambil nama host GSS dari request.getHost() dan membangun hasil dengan header Authorization bawaan. Mencocokkan objek autentikasi berdasarkan URI proxy tidak dengan sendirinya mengubah pilihan itu menjadi nama host proxy dan Proxy-Authorization.

Karena itu integrasi proxy memerlukan host permintaan yang benar dan hasil berlingkup proxy untuk pertukaran tersebut. Permintaan HTTPS CONNECT dan permintaan asal biasa dapat memiliki nilai host berbeda. Pastikan perilaku implementasi yang terpasang alih-alih menganggap setter nama layanan menyediakan alur 407 lengkap.

Untuk 407, periksa pertukaran autentikasi proxy dan host yang dipakai permintaan itu. 401 termasuk autentikasi asal. Tiket pengguna yang valid saja tidak membuktikan bahwa Jetty meminta tiket layanan yang benar atau bahwa perantara menerimanya.

Artikel terkait