View a markdown version of this page

Verifikasi JWT menggunakan Application Load Balancer - Elastic Load Balancing

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Verifikasi JWT menggunakan Application Load Balancer

Anda dapat mengonfigurasi Application Load Balancer (ALB) untuk memverifikasi Token Web JSON (JWT) yang disediakan oleh klien untuk komunikasi layanan-ke-layanan (S2S) atau mesin-ke-mesin (M2M) yang aman. Penyeimbang beban dapat memverifikasi JWT tidak peduli bagaimana itu dikeluarkan dan tanpa interaksi manusia.

ALB akan memvalidasi tanda tangan token dan memerlukan dua klaim wajib: 'iss' (penerbit) dan 'exp' (kedaluwarsa). Selain itu, jika ada dalam token, ALB juga akan memvalidasi klaim 'nbf' (bukan sebelumnya) dan 'iat' (dikeluarkan pada saat itu). Anda dapat mengonfigurasi hingga 10 klaim tambahan untuk validasi. Klaim ini mendukung tiga format:

  • Single-string: Nilai teks tunggal

  • Space-separated nilai: Beberapa nilai dipisahkan oleh spasi (maksimum 10 nilai)

  • String-array: Array nilai teks (maksimum 10 nilai)

Jika token valid, load balancer meneruskan permintaan dengan token sebagaimana adanya ke target. Jika tidak, ia menolak permintaan tersebut.

Bersiaplah untuk menggunakan verifikasi JWT

Lakukan hal-hal berikut:

  1. Daftarkan layanan Anda dengan IdP, yang mengeluarkan ID klien dan rahasia klien.

  2. Lakukan panggilan terpisah ke IdP untuk meminta akses ke layanan. IdP merespons dengan token akses. Token ini biasanya JWT yang ditandatangani oleh IdP.

  3. Siapkan titik akhir Set Kunci Web JSON (JWKS). Penyeimbang beban memperoleh kunci publik yang diterbitkan oleh IdP di lokasi terkenal yang Anda konfigurasikan.

  4. Sertakan JWT dalam header permintaan, dan teruskan ke Application Load Balancer di setiap permintaan. Catatan: Hanya algoritma RS256 yang didukung

Batas validasi JWT

Saat menggunakan validasi JWT dengan Application Load Balancer Anda, titik akhir JWKS (JSON Web Key Set) harus memenuhi persyaratan berikut:

  • Ukuran respons maksimum: 150 KB

  • Jumlah maksimum kunci: 10 kunci

Jika respons JWKS dari penyedia identitas Anda melebihi salah satu dari batasan ini, Application Load Balancer tidak akan meneruskan permintaan ke target backend Anda.

Jika titik akhir JWKS penyedia identitas Anda melebihi batas ini, pertimbangkan untuk menerapkan validasi JWT dalam kode aplikasi Anda atau menggunakan penyedia identitas dengan kumpulan kunci yang lebih kecil.

Untuk mengkonfigurasi verifikasi JWT menggunakan konsol

  1. Buka konsol konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

  2. Pada panel navigasi, di bawah PENYEIMBANGAN BEBAN, pilih Penyeimbang beban.

  3. Pilih Application Load Balancer Anda dan pilih tab List ener.

  4. Pilih pendengar HTTPS dan pilih Kel ola aturan.

  5. Pilih Tambahkan aturan.

  6. (Opsional) Untuk menentukan nama aturan Anda, perluas Nama dan tag, lalu masukkan nama. Untuk menambahkan tag tambahan, pilih Tambahkan tag tambahan dan masukkan kunci tag dan nilai tag.

  7. Di bawah Kondisi, tentukan 1-5 nilai kondisi

  8. (Opsional) Untuk menambahkan transformasi, pilih Tam bah transformasi, pilih jenis transformasi, dan masukkan ekspresi reguler untuk dicocokkan dan string pengganti.

  9. Untuk T indakan, Pre-routing tindakan, pilih Validasi token.

    1. Untuk titik akhir JWKS, masukkan URL titik akhir Set Kunci Web JSON Anda. Titik akhir ini harus dapat diakses publik dan mengembalikan kunci publik yang digunakan untuk memverifikasi tanda tangan JWT.

    2. Untuk Penerbit, masukkan nilai yang diharapkan dari klaim iss di token JWT Anda.

    3. (Opsional) Untuk memvalidasi klaim tambahan, pilih Klaim tambahan.

      1. Untuk Nama klaim, masukkan nama klaim yang akan divalidasi.

      2. Untuk Format, pilih bagaimana nilai klaim harus ditafsirkan:

        1. String tunggal: Klaim harus cocok persis dengan satu nilai yang ditentukan.

        2. Array string: Klaim harus cocok dengan salah satu nilai dalam array.

        3. Nilai yang dipisahkan spasi: Klaim berisi nilai yang dipisahkan spasi yang harus menyertakan nilai yang ditentukan.

      3. Untuk Nilai, masukkan nilai yang diharapkan untuk klaim.

      4. Ulangi untuk klaim tambahan (maksimal 10 klaim).

  10. Untuk Tindakan, tindakan perutean, pilih tindakan utama (Teruskan ke, Mengalihkan ke, atau Kembalikan respons tetap) yang harus dilakukan setelah validasi token berhasil.

  11. Konfigurasikan tindakan utama sesuai kebutuhan

  12. Pilih Simpan.

Untuk mengkonfigurasi verifikasi JWT menggunakan CLI

Gunakan perintah create-rule berikut untuk mengkonfigurasi verifikasi JWT.

Buat aturan pendengar dengan tindakan untuk memverifikasi JWT. Listener harus menjadi pendengar HTTPS.

catatan

Saat mengonfigurasi validasi JWT, pastikan respons titik akhir JWKS Anda tidak melebihi ukuran 150 KB atau berisi lebih dari 10 kunci. Tanggapan yang melebihi batas ini akan mencegah penerusan permintaan ke target Anda.

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 10 \ --conditions Field=path-pattern,Values="/login" \ --actions file://actions.json

Berikut ini adalah contoh actions.json file yang menentukan jwt-validation tindakan dan forward tindakan. Harap ikuti dokumentasi yang disediakan oleh penyedia identitas Anda untuk menentukan bidang yang didukung

--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com" }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'

Contoh berikut menentukan klaim tambahan untuk divalidasi.

--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com", "AdditionalClaims":[ { "Format":"string-array", "Name":"claim_name", "Values":["value1","value2"] } ], }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'

Untuk informasi selengkapnya, lihat Aturan listener untuk Application Load Balancer Anda.