

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
<a name="listener-verify-jwt"></a>

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
<a name="validate-access-token-requirements"></a>

Lakukan hal-hal berikut:

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

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

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

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

## Batas validasi JWT
<a name="jwt-validation-limits"></a>

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.<a name="configure-jwt-validation-listener-rule"></a>

# Untuk mengkonfigurasi verifikasi JWT menggunakan konsol
<a name="configure-jwt-validation-listener-rule"></a>

1. Buka konsol konsol Amazon EC2 di [ https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

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

1. Pilih Application Load Balancer Anda dan pilih ** tab List ** ener.

1. Pilih pendengar HTTPS dan pilih Kel ** ola aturan**.

1. Pilih **Tambahkan aturan**.

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

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

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

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

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

   1. (Opsional) Untuk memvalidasi klaim tambahan, pilih ** Klaim tambahan. **

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

      1. Untuk ** Format**, pilih bagaimana nilai klaim harus ditafsirkan:

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

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

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

      1. Untuk ** Nilai**, masukkan nilai yang diharapkan untuk klaim.

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

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

1.  Konfigurasikan tindakan utama sesuai kebutuhan 

1.  Pilih **Simpan**.

## Untuk mengkonfigurasi verifikasi JWT menggunakan CLI
<a name="configure-access-token-validation"></a>

Gunakan [ perintah ](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-rule.html) 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](listener-rules.md).