id
Panduan
Server
Mengonfigurasi outgoing HTTP requests
idGuidesServerOutgoinghttp

Configuring outgoing HTTP requests

NQRust-Identity sering perlu membuat permintaan ke aplikasi dan layanan yang diamankannya. NQRust-Identity mengelola koneksi keluar ini menggunakan klien HTTP. Panduan ini menunjukkan bagaimana mengonfigurasi klien, kolam koneksi, pengaturan lingkungan proxy, waktu tunggu, dan lainnya.

Mengonfigurasi sertifikat terpercaya untuk koneksi TLS

Lihat Mengonfigurasi sertifikat terpercaya untuk cara mengonfigurasi NQRust-Identity Truststore sehingga NQRust-Identity dapat melakukan permintaan keluar menggunakan TLS.

Perintah Konfigurasi Klien

Klien HTTP yang digunakan NQRust-Identity untuk komunikasi keluar sangat dapat dikonfigurasi. Untuk mengonfigurasi klien HTTP keluar NQRust-Identity, masukkan perintah ini:

bin/kc.[sh|bat] start --spi-connections-http-client--default--<configurationoption>=<value>

Berikut adalah opsi perintah:

Waktu maksimum dalam milidetik sampai meng-establish koneksi waktu habis. Default: Tidak diatur.

Waktu maksimum dalam milidetik untuk mendapatkan koneksi untuk permintaan. Default: 5000ms

Waktu maksimum tidak aktif antara dua paket data sampai koneksi socket waktu habis, dalam milidetik. Default: 5000ms

Ukuran kolam koneksi untuk koneksi keluar. Default: 128.

Berapa banyak koneksi yang dapat dipool per host. Default: 64.

Waktu hidup koneksi maksimum dalam milidetik. Default: Tidak diatur.

Waktu maksimum koneksi idle yang tinggal di kolam koneksi, dalam milidetik. Koneksi idle akan dihapus dari kolam oleh thread cleaner latar belakang. Atur opsi ini ke -1 untuk menonaktifkan pemeriksaan ini. Default: 900000.

Aktifkan atau nonaktifkan caching cookie. Default: true.

Jalur berkas ke berkas keystore Java. Keystore ini berisi sertifikat klien untuk mTLS.

Kata sandi untuk keystore klien. DIPERSYARATIKAN, saat client-keystore diatur.

Kata sandi untuk private key klien. DIPERSYARATIKAN, saat client-keystore diatur.

Tentukan konfigurasi proxy untuk permintaan HTTP keluar. Untuk detail lebih lanjut, lihat Pemetaan proxy untuk permintaan HTTP keluar.

Jika permintaan keluar memerlukan HTTPS dan opsi konfigurasi ini diatur ke true, Anda tidak perlu menentukan truststore. Pengaturan ini hanya boleh digunakan selama pengembangan dan tidak pernah dalam produksi karena akan menonaktifkan verifikasi sertifikat SSL. Default: false.

Mengonfigurasi perilaku retry untuk permintaan HTTP keluar

⚠️

Jangan biarkan durasi retry keluar melebihi timeout pemanggil. Jika tidak, pemanggil mungkin waktu habis dan melihat kesalahan saat NQRust-Identity terus retry di latar belakang.

NQRust-Identity dapat secara otomatis retry permintaan HTTP keluar yang gagal. Hal ini berguna untuk menangani kesalahan jaringan sementara atau ketidaktersediaan layanan sementara. Perilaku retry dinonaktifkan secara default dan harus diaktifkan secara eksplisit.

Berikut adalah opsi konfigurasi retry:

Jumlah maksimum retry untuk permintaan HTTP yang gagal. Atur ke 0 untuk menonaktifkan retry. Default: 0.

retry untuk permintaan yang telah dikirim (untuk metode umum seperti GET dan POST) selalu diaktifkan. Gunakan max-retries untuk mengontrol apakah retry dilakukan.

Waktu backoff awal dalam milidetik sebelum percobaan retry pertama. Default: 1000.

Pengali untuk backoff eksponensial antara percobaan retry. Misalnya, dengan backoff awal 1000ms dan pengali 2.0, penundaan retry akan menjadi: 1000ms, 2000ms, 4000ms, dll. Default: 2.0.

Apakah untuk menerapkan jitter pada waktu backoff untuk mencegah badai retry terSinkronisasi saat beberapa klien retry pada saat yang sama. Default: true.

Faktor jitter untuk diterapkan pada waktu backoff. Nilai 0.5 berarti waktu backoff aktual akan antara 50% dan 150% dari waktu backoff eksponensial yang dihitung. Default: 0.5.

bin/kc.[sh|bat] start --spi-connections-http-client-default-max-retries=3 \
  --spi-connections-http-client-default-initial-backoff-millis=1000 \
  --spi-connections-http-client-default-backoff-multiplier=2.0

Dalam contoh ini, NQRust-Identity akan retry permintaan HTTP yang gagal hingga 3 kali dengan backoff eksponensial mulai dari 1000ms dan menggandakan setiap percobaan retry.

Perilaku retry berlaku untuk semua permintaan HTTP keluar yang dilakukan oleh NQRust-Identity, termasuk validasi OCSP, komunikasi penyedia identitas, dan panggilan layanan eksternal lainnya.

Pemetaan proxy untuk permintaan HTTP keluar

Untuk mengonfigurasi permintaan keluar agar menggunakan proxy, Anda dapat menggunakan variabel lingkungan proxy standar berikut untuk mengonfigurasi pemetaan proxy: HTTP_PROXY, HTTPS_PROXY, dan NO_PROXY.

  • Variabel HTTP_PROXY dan HTTPS_PROXY mewakili server proxy yang digunakan untuk permintaan HTTP keluar. NQRust-Identity tidak membedakan antara dua variabel ini. Jika Anda menentukan kedua variabel, HTTPS_PROXY akan mengambilprecedence tidak peduli skema yang digunakan server proxy.
  • Variabel NO_PROXY mendefinisikan daftar nama host yang dipisahkan koma yang seharusnya tidak menggunakan proxy. Untuk setiap nama host yang Anda tentukan, semua subdomain-nya juga dikecualikan dari penggunaan proxy.

Variabel lingkungan dapat huruf kecil atau huruf besar. Huruf kecil mengambilprecedence. Misalnya, jika Anda menentukan kedua HTTP_PROXY dan http_proxy, http_proxy digunakan.

HTTPS_PROXY=https://www-proxy.acme.com:8080
NO_PROXY=google.com,login.facebook.com

Dalam contoh ini, hasil berikut terjadi:

  • Semua permintaan keluar menggunakan proxy https://www-proxy.acme.com:8080 kecuali untuk permintaan ke google.com atau subdomain apapun dari google.com, seperti auth.google.com.
  • login.facebook.com dan semua subdomain-nya tidak menggunakan proxy yang diatur, tetapi groups.facebook.com menggunakan proxy karena itu bukan subdomain dari login.facebook.com.

Pengaturan Proxy Menggunakan Ekspresi Regular

Selain menggunakan variabel lingkungan untuk pengaturan proxy, Anda dapat mengonfigurasi daftar terpisah koma proxy-mappings untuk permintaan keluar yang dikirim oleh NQRust-Identity. Proxy-mappings terdiri dari pola nama host berbasis regex dan proxy-uri, menggunakan format pola-nama-host;proxy-uri.

Sebagai contoh, pertimbangkan ekspresi regular berikut:

.*\.(google|googleapis)\.com

Anda menerapkan pola nama host berbasis regex dengan memasukkan perintah ini:

bin/kc.[sh|bat] start --spi-connections-http-client--default--proxy-mappings='.*\\.(google|googleapis)\\.com;http://www-proxy.acme.com:8080'

Karakter backslash \ di-escape lagi karena micro-profile config digunakan untuk mengurai daftar pemetaan.

Untuk menentukan proxy untuk permintaan HTTP keluar, hal berikut terjadi:

  • Nama host target dibandingkan dengan semua pola nama host yang dikonfigurasi.
  • Proxy-uri dari pola yang pertama kali cocok digunakan.
  • Jika tidak ada pola yang dikonfigurasi yang cocok dengan nama host, tidak ada proxy yang digunakan.

Ketika server proxy Anda memerlukan otentikasi, sertakan kredensial pengguna proxy dalam format username:password@. Sebagai contoh:

.*\.(google|googleapis)\.com;http://proxyuser:password@www-proxy.acme.com:8080
# Semua permintaan ke Google APIs menggunakan http://www-proxy.acme.com:8080 sebagai proxy
.*\.(google|googleapis)\.com;http://www-proxy.acme.com:8080

# Semua permintaan ke sistem internal tidak menggunakan proxy
.*\.acme\.com;NO_PROXY

# Semua permintaan lainnya menggunakan http://fallback:8080 sebagai proxy
.*;http://fallback:8080

Dalam contoh ini, hal berikut terjadi:

  • Nilai khusus NO_PROXY untuk proxy-uri digunakan, yang berarti tidak ada proxy yang digunakan untuk host yang cocok dengan pola nama host terkait.
  • Pola tangkapan semua mengakhiri proxy-mappings, menyediakan proxy default untuk semua permintaan keluar.

Opsi yang Relevan

OpsiTipe atau NilaiDefault
truststore-kubernetes-enabled
Jika diaktifkan, server akan secara otomatis menyertakan sertifikat CA akun layanan Kubernetes default dari "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" dan sertifikat CA layanan OpenShift dari "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt" saat berjalan di lingkungan kontainer.
CLI: --truststore-kubernetes-enabled
Env: KC_TRUSTSTORE_KUBERNETES_ENABLED
true, falsetrue
truststore-paths
Daftar pkcs12 (p12, pfx, atau ekstensi pkcs12), file PEM, atau direktori yang berisi file-file tersebut yang akan digunakan sebagai sistem truststore.
CLI: --truststore-paths
Env: KC_TRUSTSTORE_PATHS
Daftar