Token Web JSON sebagai Unsur Pembangun untuk Keamanan Cloud

Penulis

Henrik Loeser

Technical Offering Manager / Developer Advocate

Memahami cara mengklaim identitas Anda.

Saya tidak yakin kapan pertama kali melihat Token Web JSON (JWT). Namun, sejak itu, saya telah melihat banyak di antaranya. Bagi mata yang tidak terlatih, JWT terlihat seperti output komputer yang kacau:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30._iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM

Kenyataannya, baris di atas (dan JWT pada umumnya) menyimpan informasi penting yang memiliki dampak langsung pada keamanan, baik di cloud maupun on premises. Ini adalah informasi untuk mengidentifikasi dan mengautentikasi pengguna. JWT sangat penting untuk menjalankan solusi berbasis layanan mikro dan merupakan unsur pembangun penting untuk mewujudkan aplikasi 12 faktor.

Dalam postingan blog ini, saya akan membagikan sekilas sejarah di balik JWT, memperkenalkan konsep dasar JWT, dan membahas skenario penggunaan umum JWT di IBM Cloud.

 

Apakah tim Anda akan mampu mendeteksi zero-day berikutnya tepat waktu?

Bergabunglah dengan para pemimpin keamanan yang mengandalkan Buletin Think untuk berita yang dikurasi tentang AI, keamanan siber, data, dan otomatisasi. Pelajari dengan cepat dari tutorial pakar dan penjelas—dikirimkan langsung ke kotak masuk Anda. Lihat Pernyataan Privasi IBM®.

Langganan Anda akan disediakan dalam bahasa Inggris. Anda akan menemukan tautan berhenti berlangganan di setiap buletin. Anda dapat mengelola langganan atau berhenti berlangganan di sini. Lihat Pernyataan Privasi IBM® kami untuk informasi lebih lanjut.

https://www.ibm.com/id-id/privacy

Sekilas sejarah JWT

Draf pertama untuk Token Web JSON sudah berusia lebih dari 10 tahun (dibuat pada Desember 2010). Draf awalnya berbunyi: “Token Web JSON (JWT) mendeskripsikan format token yang dapat mengenkode klaim yang ditransfer antara dua pihak. Klaim dalam JWT dienkodekan sebagai objek JSON yang ditandatangani secara digital.“

Dalam versi terbarunya, IETF RFC 7519, draf ini diperluas menjadi sebagai berikut: “Token Web JSON (JWT) adalah cara yang ringkas dan aman untuk URL untuk merepresentasikan klaim yang akan ditransfer antara dua pihak. Klaim dalam JWT dienkodekan sebagai objek JSON yang digunakan sebagai payload struktur Tanda Tangan Web JSON (JWS) atau sebagai teks biasa struktur Enkripsi Web JSON (JWE), yang memungkinkan klaim ditandatangani secara digital atau terlindungi integritasnya dengan Kode Autentikasi Pesan (MAC) dan/atau terenkripsi.“

Deskripsi baru ini mengisyaratkan dua representasi JWT (sering diucapkan sebagai “jot”) — yaitu struktur Tanda Tangan Web JSON (JWS) atau Enkripsi Web JSON (JWE). JWS didefinisikan dalam RFC 7515, sedangkan JWE didefinisikan dalam RFC 7516. Bahkan ada beberapa standar keamanan berbasis JSON yang terkait lainnya, yang semuanya didefinisikan oleh kelompok kerja yang disebut JOSE: Penandatanganan dan Enkripsi Objek JSON.

OAuth 2.0 adalah standar industri untuk otorisasi. Secara umum, standar tersebut menawarkan aliran otorisasi dan konsep inti, termasuk yang disebut token akses dan token penyegaran. Meski tidak wajib, saat ini umumnya JWT menggunakan standar tersebut. Seperti yang telah dinyatakan, OAuth berfokus pada otorisasi, dan terkadang juga disalahgunakan untuk menangani identifikasi. OpenID Connect melengkapi kekurangan ini dan memperkenalkan token identitas atau token ID. Token ID direpresentasikan sebagai JWT.

Encoding dan decoding JWT

Berdasarkan sejarah tersebut dan beberapa standar sebagai dasar, bagaimana kita dapat memproses JWT yang tercantum di atas dan informasi apa saja yang ada di dalamnya?

JWT di atas terdiri dari tiga bagian, yang masing-masing dipisahkan oleh titik (‘.’):

  1. Header: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
  2. Payload: eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
  3. Tanda tangan: _iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM

Baik header maupun payload dienkodekan dengan base64url  dan, tanpa memperhitungkan kemungkinan padding, dapat didekodekan seperti ini:

henrik@home> base64 -d <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
{"alg":"HS256","typ":"JWT"}

henrik@home> base64 -d <<< eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
{"sub":"1234567890ABC","name":"Henrik Loeser","iat":1611140400,"exp":1611234567}base64: invalid input

Header berisi informasi tentang alg (algoritma) yang digunakan — di sini, HS256 (HMAC SHA256). Payload mengandalkan jenis token (access/refresh/ID/…) dan terdiri dari klaimBidang header dan payload JOSE tersebut dan lainnya yang telah ditentukan sebelumnya dikelola oleh IANA. Dalam contoh di atas, bidang dan klaimnya adalah "sub" (subjek), "name" (nama), "iat" (diterbitkan pada), dan "exp" (waktu kedaluwarsa).

Tanda tangan dihitung dengan menerapkan algoritma yang disebutkan pada rangkaian header, ‘.’ dan payload dan kemudian mengenkodekan hasil dengan base64url. Oleh karena itu, ketiga bagian yang dipisahkan oleh titik akan membentuk JWT. Penjelasan tentang cara tanda tangan dibuat tersedia di RFC 7515.

Anda dapat mengakses JWT di atas pada debugger online ini di JTW.io. Pertama-tama, akan ditampilkan pesan “Invalid Signature”. Anda dapat mengatasinya dengan mengganti rahasia default yang ditampilkan dengan !!!my-really-big-256-bit-secret!!!.

IBM Cloud dan JWT

Karena IBM Cloud menyediakan banyak layanan dalam katalognya dan merupakan aplikasi Internet dengan banyak komponen, IBM Cloud menggunakan banyak token, termasuk JWT. Anda mungkin telah menggunakan IBM Cloud Command Line Interface (CLI) dan perintah ibmcloud iam oauth-tokens:

Perintah ini mencetak token pembawa OAuth (token akses) untuk sesi CLI yang sedang berlangsung, yang diimplementasikan sebagai JWT. Token IAM ini digunakan untuk mengakses layanan cloud yang didukung oleh IAM. 

Jika Anda ingin mengintegrasikan pengguna eksternal ke akun cloud Anda, JWT juga digunakan. Token identitas dan klaim yang disertakan ditukar dengan autentikasi untuk mengidentifikasi pengguna. Banyak solusi menggunakan layanan keamanan IBM Cloud App ID. Layanan ini membantu mengautentikasi pengguna dan melindungi sumber daya. Layanan ini juga menggunakan standar OAuth 2.0 dan OpenID Connect yang disebutkan di atas, dan oleh karena itu berhubungan dengan akses, ID, dan token penyegaran.

Salah satu layanan favorit saya (dan Anda) adalah Watsonx Assistant untuk membangun chatbot. Jika ingin mengamankan obrolan web (yaitu, untuk lebih melindungi pertukaran pesan dan untuk mengesahkan asal pesan), Anda dapat menggunakan JWT.

Tentu saja, masih banyak lagi contoh lain tentang penggunaan JWT untuk menukar klaim (keamanan) dengan mudah demi memperkuat keamanan solusi cloud.

Ringkasan

JWT adalah cara mudah dan mandiri untuk bertukar klaim antara dua pihak. Struktur data ini tersedia di mana-mana, baik di cloud maupun on premises. Semoga pengantar di atas dapat menarik perhatian Anda.

Jika Anda ingin memeriksa dan menangani sendiri JWT, saya merekomendasikan alat online seperti https://jwt.io/ untuk memulai. Untuk penggunaan lebih lanjut, pakai monitor jaringan atau alat pengembang di browser Anda untuk memantau JWT. Selamat mencoba dan baca tutorial IBM Cloud kami, yang juga menyertakan banyak tutorial terkait keamanan.

Jika Anda memiliki masukan, saran, atau pertanyaan terkait postingan ini, hubungi saya di Twitter (@data_henrik) atau LinkedIn.

Solusi terkait
Solusi keamanan dan perlindungan data

Lindungi data di berbagai lingkungan, penuhi peraturan privasi, dan sederhanakan kompleksitas operasional.

    Jelajahi solusi keamanan data
    IBM® Guardium

    Temukan IBM Guardium, rangkaian perangkat lunak keamanan data yang melindungi data sensitif di lokasi dan cloud.

     

      Jelajahi IBM Guardium
      Layanan keamanan data

      IBM menyediakan layanan keamanan data yang komprehensif untuk melindungi data perusahaan, aplikasi, dan AI.

      Jelajahi layanan keamanan data
      Ambil langkah selanjutnya

      Lindungi data organisasi Anda di seluruh hybrid cloud dan sederhanakan persyaratan kepatuhan dengan solusi keamanan data.

      Jelajahi solusi keamanan data Pesan demo langsung