![translation](https://cdn.durumis.com/common/trans.png)
Ini adalah postingan yang diterjemahkan oleh AI.
Apa itu JWT (JSON Web Token)?
- Bahasa penulisan: Bahasa Korea
- •
-
Negara referensi: Semua negara
- •
- TI
Pilih Bahasa
Teks yang dirangkum oleh AI durumis
- JSON Web Token (JWT) adalah token terenkripsi untuk mengirimkan informasi secara aman.
- JWT terdiri dari header, payload, dan tanda tangan, dan tanda tangan tersebut menjamin integritas data.
- JWT tidak memerlukan pengelolaan status informasi secara terpisah, sehingga memiliki skalabilitas tinggi di lingkungan terdistribusi.
Apa itu JWT?
JSON Web Token (JWT) adalah jenis standar terbuka (RFC 7519) yang merupakan cara untuk mengirimkan informasi dengan aman dalam format objek JSON. Seperti namanya, ini berarti memasukkan informasi yang diperlukan ke dalam token dan kemudian mengenkripsikannya untuk digunakan.
JWT ditekankan sebagai token yang ditandatangani (signed token). Ketika menggunakan pasangan kunci publik/privat untuk menandatangani, tanda tangan ini menjamin bahwa hanya pihak yang memiliki kunci privat yang menandatangani token tersebut. Artinya, server yang memiliki kunci dapat mengetahui apakah token ini sah.
Struktur JWT
JWT terdiri dari Header, Payload, dan Signature.
Setiap bagian di-encode dengan Base64 dan dipisahkan dengan titik (.).
Header
{
"alg": "HS256",
"typ": "JWT"
Header berisi dua informasi utama: jenis token (typ) dan algoritma penandatanganan yang digunakan (alg). Algoritma penandatanganan digunakan untuk membuat dan memverifikasi tanda tangan.
typ ditetapkan sebagai "JWT", dan alg ditulis sebagai HMAC, SHA256, dll. Seperti contoh di atas, ini berarti menggunakan algoritma HS256 dengan kunci privat.
Payload
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
Payload berisi Claim yang ingin Anda kirimkan ke dalam token. Informasi identifikasi pengguna atau property untuk token disimpan dalam bentuk key-value. Singkatnya, Anda dapat menambahkan apa pun yang Anda inginkan!
Dalam spesifikasi standar, nama kunci didefinisikan secara ringkas sebagai 3 huruf.
Registered claim adalah sebagai berikut.
- iss (Issuer): Penerbit token (berisi informasi identifikasi unik dari penerbit token)
- sub (Subject): Subjek yang dituju token
- aud (Audience): Penerima token
- exp (Expiration Time): Waktu kedaluwarsa token (setelah waktu ini, token tidak lagi valid)
- nbf (Not Before): Tanggal aktivasi token (token tidak dapat digunakan sebelum waktu ini)
- iat (Issued At): Waktu penerbitan token
- jti (JWT Id): Pengidentifikasi token JWT (nilai untuk membedakan jika ada beberapa penerbit)
Anda dapat menambahkan nilai lain yang diperlukan jika ada.
Namun, payload bukanlah nilai yang ditandatangani dan tidak dienkripsi, sehingga tidak menyimpan informasi sensitif.
Siapa pun dapat melihatnya jika didekripsi.jwt.io Anda juga dapat langsung melihatnya di situs web.
Signature
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
Header dan Payload di-encode dengan base64, dihubungkan dengan titik (.), dan kemudian ditandatangani menggunakan kunci privat your-256-bit-secret yang dimiliki server.
Oleh karena itu, hanya server yang mengeluarkan token yang dapat mendekripsi tanda tangan (Signature) dengan kunci privat.
Jika Anda berpikir tentang dekripsi, Anda dapat melihat apakah base64UrlEncode(header) cocok dengan nilai header JWT, dan apakah base64UrlEncode(payload) cocok dengan nilai header JWT, setelah Anda mendekripsi tanda tangan (Signature) dengan kunci privat.
Header dan payload, tidak termasuk tanda tangan, hanya di-encode sehingga informasi dalam teks dapat dilihat, tetapi integritas dan keamanan informasi dipertahankan melalui tanda tangan.
JWT adalah Self-contained yang memiliki semua informasi yang diperlukan, dan dibuat untuk mengatasi kekurangan sesi yang harus stateful. JWT tidak memerlukan penyimpanan terpisah.
Server tidak perlu mempertahankan sesi, sehingga stateless, yang meningkatkan skalabilitas dalam arsitektur sistem terdistribusi atau mikroservis.
Dilindungi oleh Signature, tanda tangan digital, dan dapat menjamin integritas data.