JAVA 2FA (TWO FACTOR AUTHENTICATION)



Selamat Malam gan, lama tidak jumpa terakhir ane posting nih blog sekitar 4 tahun lalu, semoga aja sekarang bisa istiqomah/konsisten untuk post nih blog. Langsung saja kali ini ane akan share tentang develop TOTP/2FA pada Pemrograman Java, kuy ane akan share point2 nya saja.

Berikut perinsip kerja dari 2FA/TOTP, jadi Server akan generate suatu "key"/secret_code, nanti "key" tersebut akan disimpan di DB dan di tampilkan dalam bentuk barcode agar dapat discan oleh Mobile App. TOTP bersifat offline, jadi algoritma akan berjalan di masing2 device baik Server maupun Mobile App untuk men-generate "passcode" 6 digit berdasarkan "key" dan waktu.

Oke langsung ke dev nya ya.

Untuk depedency ane menggunakan library dari kang samdjstevens, berikut link github nya:

https://github.com/samdjstevens/java-totp/tree/master/totp-spring-boot-starter.

Library disini lumayan lengkap mulai dari generate "key"/secret_code, verify dan recovery_code. Pertama kita generate dulu "key" nya dengan code berikut:

key = secretGenerator.generate();

Selanjutnya simpan dalam DB dan tampilkan dalam bentuk barcode:

QrData data = qrDataFactory.newBuilder()
                .label("LABEL/EMAIL")
                .secret("KEY")
                .issuer("APP")
                .build();
qrCodeImage = getDataUriForImage(qrGenerator.generate(data),
                qrGenerator.getImageMimeType());

Setelah jadi barcode (diolah oleh FE), lalu dapat discan oleh Mobile App (Misal Google Auth), selanjutnya akan muncul "passcode" yg berubah secara berkala. Verifikasi "passcode" nya dengan code berikut:

if (!verifier.isValidCode(key, "PASSCODE")) { message = "NOT VALID"; }

Bagaimana mudah bukan membuat 2FA/TOTP di Java, berikut referensi artikel untuk developnya:

https://www.javachinna.com/spring-boot-angular-two-factor-authentication/


Post a Comment

0 Comments