Skip to content

Securing Application using JWT

Securing backend using JWT

Pada catatan sebelumnya, kita telah mebahas bagaomana cara menggunakan basic aithentication dengan RESTfil web service. Methid ini tidak dapat digunakan ketika kita menggunakan frontend sendiri, seperti React. Maka dari itu kita akan menggunakan JWT authentication.

JWT adalah cara yang solid untuk mengimplementasi authentication pada web application yang modern. JWT sangant kecil dalam sisi ukuran dan dapat dikirim melalui Uniform Resource Locator (URL), pada parameter atau didalam POST header. JWT juga berisikan semua informasi yang dibutuhkan untuk user.

JWT terdiri dari 3 bagian yang dipisahkan oleh titik (dots) : xxxxx.yyyyy.zzzzz. Setiap bagian memiliki fungsinya masing-masing;

  1. Bagian pertama (xxxxxx) adalah header yang mendefinisikan tipe dari token dan hashing algorithm
  2. Bagian kedua (yyyyy) adalah payload yang pada umumnya dalam kasusu authentication berisikan informasi dari user
  3. Bagian akhir (zzzzz) adalah signature (penanda) yang digunakan untuk memverifikasi bahwa toke tidak diganti selama proses berlangsung.

Berikut adalah contoh jwt

Alt text

Representasi sederhana dari penggunakan JWT pada proses authentication

Alt text

Setelah user terautentikasi, setiap request yang user berikan harus selalu mengandung JWT yang diterima saat user terautentikasi

Untuk menggunakan JWT, insyaAllah kita akan menggunakan library JJWT. Selanjutnya kita hanya perlu mendownload dengan cara menambahkan depedency pada pom.xml

Code

<dependencies>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>0.11.2</version>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>0.11.2</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId>
        <version>0.11.2</version>
        <scope>runtime</scope>
    </dependency>
<dependencies>

Karema penggunaan JWT pada buku bukan best practice. Maka dari itu saya menuliskan pada catatan ini dari seumber lain. Ada dua source pada catatan setelah ini, yaitu ada pada package bagian4.3_jwt dan bagian4.3_jwt2

Source Github

bagian4.3_jwt_true PPlease learn from this. and this for refresh and this for http only refresh