Verifikasi JWTs menggunakan Application Load Balancer - ELB

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

Verifikasi JWTs menggunakan Application Load Balancer

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

ALB akan memvalidasi tanda tangan token dan membutuhkan 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 waktu). Anda dapat mengonfigurasi hingga 10 klaim tambahan untuk validasi. Klaim ini mendukung tiga format:

  • Single-string: Nilai teks tunggal

  • Nilai yang dipisahkan spasi: Beberapa nilai dipisahkan oleh spasi (maksimum 10 nilai)

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

Jika token valid, penyeimbang beban meneruskan permintaan dengan token seperti target. Kalau tidak, itu menolak permintaan.

Bersiaplah untuk menggunakan verifikasi JWT

Lakukan hal-hal berikut:

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

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

  3. Siapkan titik akhir JSON Web Key Sets (JWKS). Load balancer 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.

Untuk mengkonfigurasi verifikasi JWT menggunakan konsol

  1. Buka konsol EC2 konsol Amazon 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 Listeners.

  4. Pilih pendengar HTTPS dan pilih Kelola aturan.

  5. Pilih Tambahkan aturan.

  6. (Opsional) Untuk menentukan nama aturan Anda, perluas Nama dan tag, dan 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 Tambahkan transformasi, pilih jenis transformasi, dan masukkan ekspresi reguler untuk mencocokkan dan string pengganti.

  9. Untuk Tindakan, Tindakan pra-perutean, 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 untuk memvalidasi.

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

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

        2. String array: 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, Alihkan 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 JWTs. Pendengar harus menjadi pendengar HTTPS.

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

Berikut ini adalah contoh dari 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 memvalidasi.

--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.