Sunday, September 9, 2018

Two Factor Authentication with Spring Security

Setelah sebelumnya kita udah bahas tentang pentingnya two-factor Authentication atau disingkat 2FA dalam mengamankan suatu apliakasi online, kali ini kita akan bahas tentang penerapan 2FA pada Spring Security. Udah gasabar ? kuy cekidot.


Dari blog sebelumnya kita sudah membahas beberapa metode yang digunakan pada 2FA kali ini kita akan membahas metode 2FA menggunakan software, software yang digunakan adalah Google Authenticator. Sebelumnya kita diharuskan untuk mengunduh Google Authenticator terlebih dahulu di play store atau app store. Pada spring security kita akan menambahkan fungsi baru kedalam sistem simple login dan menggunakan Google Authenticator untuk meng generate token.

Langkah penggunaan Google Authenticator sebagai 2FA adalah sebagai berikut :
  1. User akan registrasi dengan menginput data email dan password
  2. Setelah sukses registrasi user akan diarahkan ke sebuah halaman dimana sudah tersedia QR-Code hasil generate secret key dari user tersebut.
  3. Lalu user scaning QR-Code pada aplikasi Google Authenticator yang sudah diunduh sebelumnya
  4. Setelah itu pada aplikasi Google Authenticator akan terlihat deretan 6 digit unik code.
  5. Kemudian user menuju form login
  6. User memasukan email dan password yang sudah didaftarkan sebelumnya dan memasukan 6 digit kode unik yang tedapat pada Google Authenticator.
  7. Saat data valid maka user akan diijinkan masuk kehalaman selanjutnya.


Gimana ? kebayangkan alur proses nya ? ehehehe

Untuk menabahkan fungsi generate token kita akan menggunakan simple server-side library dengan menambahkan depedency pada pom.xml.



Kemudian kita membuat user entity sebagai berikut.

kita akan menyimpan secret key yang nantinya akan digunakan untuk generate token.

Setelah itu kita perlu menyesuaikan security configuration agar dapat menambahkan parameter tambahan, parameter yang dimaksud adalah verification token. Kita dapat menambahkan parameter tersebut dengan membuat CustomAuthenticationDeatilsSource.


Dan kita akan membuat CustomWebAuthenticationDetails.


Kemudian seperti inilah security configuration yang akan kita buat


Dan tentunya kita menambahkan paramater pada form login.

Untuk AuthenticationDetailsSource dapat dimodifikasi sesuai dengan kabutuhan kita.

Setelah itu kita juga perlu membuat AuthenticationProvider untuk menghandle paramater tambahan.


Dan juga kita perlu membuat Authentication Provider Bean


Dalam Proses registrasi setelah kita mengisi form registrasi maka kita akan diarahkan ke halaman dimana kita bisa scan QR-Code melaui Google Authenticator , berikut adalah method untuk menggenerate QR-Code:



Dan tentu kita akan membuat sebuah halaman untuk menampilkan Qr-Code.

<html>
<body>
<div id="qr">
    <p>
        Scan this Barcode using Google Authenticator app on your phone
        to use it later in login
    </p>
    <img th:src="${param.qr[0]}"/>
</div>
<a href="/login" class="btn btn-primary">Go to login page</a>
</body>

</html>

Yaaappp... selamat mencoba yaaa gais semoga postingan ini bermanfat..aamiin...

Source:https://www.baeldung.com/spring-security-two-factor-authentication-with-soft-token

No comments:

Post a Comment