Hallo, Udah berapa hari nggak ngepost ya......, wkwkwk, Oke kali ini saya bakal share sesuatu yang keren banget buat bikin aplikasi kalian makin aman tentunya huehuehue *ketawa jahat, Okeh, Materi kali ini adalah membuat Two Factor Authentication hmm, beberapa hari in isaya sempat mendaftar di digital*cean.com untuk beberapa keperluan saya,
Terus saya melihat fitur enable two factor authentication, saya mencoba dan keren banget gan, codenya bisa ada di hp, jadi kalo mau login harus masukin code yang di generate Google Authenticator, Karena saya tertarik akhirnya saya coba browsing kesana kemari buat cari refrensi,
Dan akhirnya saya nembu library ini gan dari PHPGangsta, Setelah ane liat sourcenya ternyata algoritmanya begitu gan hehe, oh begitu ya??, iya gan.
Untuk librarynya bisa kalian download di https://github.com/PHPGangsta/GoogleAuthenticator, Di library itu sudah sangat lengkap buat keperluan GA ini, oke Time To Code!
PLEASE NOTE : Karena ini untuk keperluan belajar, saya nggak akan bikin langsung berkomunikasi dengan database ya, cuma contoh kecil / garis besarnya saja dari membuat TOTP ini, Sekilas tampilanya akan seperti ss dibwah ini.
Dan ingat juga, karena ini hanya untuk latihan, saya juga mnampilkan secret codenya hehehehe B|. Jangan lakukan ya kalo dalam produksi, entar bisa ketebak codenya :p. ,
1. index.php
Pastikan kamu sudah download librarynya, jika sudah, silahkan copy isi dari file PHPGangsta ke projectmu/lib, untuk folder library, jika sudah include filenya di index.php
<?php
require_once '/lib/GoogleAuthenticator.php';
Jika sudah silahkan inisialisasi classnya codenya seperti dibawah ini
<?php
require_once '/lib/GoogleAuthenticator.php';
// inisilisasi PHPGangsta_GoogleAuthenticator() class
$authenticator = new PHPGangsta_GoogleAuthenticator();
Selanjutnya, Kita akan mengambil secret codenya, Codenya seperti dibawah ini
<?php
require_once '/lib/GoogleAuthenticator.php';
// inisilisasi PHPGangsta_GoogleAuthenticator() class
$authenticator = new PHPGangsta_GoogleAuthenticator();
// Mendapatkan secret code
$secret = $authenticator->createSecret();
echo $secret;
Silahkan buka projectmu di browser untuk mengambil secretnya :D,,, Jika sudah simpan codenya dan ubah codenya jadi seperti ini.
<?php
require_once '/lib/GoogleAuthenticator.php';
// inisilisasi PHPGangsta_GoogleAuthenticator() class
$authenticator = new PHPGangsta_GoogleAuthenticator();
// Mendapatkan secret code
$secret = "KUR3ZICXYN7ZK5C3"; // Replace dengan secret yang didapat tadi
echo $secret;
Sampai sini kita sudah selesai membuat secret codenya, Selanjutnya kita akan generate QR Code nya biar bisa di scan dari Aplikasi Google Authenticatornya. codenya seperti dibawah in.
<?php
require_once '/lib/GoogleAuthenticator.php';
// inisilisasi PHPGangsta_GoogleAuthenticator() class
$authenticator = new PHPGangsta_GoogleAuthenticator();
// Mendapatkan secret code
$secret = "KUR3ZICXYN7ZK5C3"; // Replace dengan secret yang didapat tadi
echo $secret;
/*
Generate QR code untuk di scan dengan APP Google Authenticator,
Kita akan menggunakan API GET google chart yang sudah include di PHPGangsta class
*/
$website = "rizalfakhri.com"; // Replace dengan url website anda
$title = "RIZALBLOG"; // Title yang akan ditampilkan
$tolerance = 0; // Memberi waktu lebih sebelum kode expired.
// Generate! Booyah B| wkwkwk
$QRCode = $authenticator->getQRCodeGoogleUrl($title,$secret,$website);
// Tampilkan QR Code untuk di scan
echo "<img src='" . $QRCode . "'></img>";
Jika dibuka di browser maka akan jadi seperti ini.
Sampai sini kita sudah menyelesaikan 2 step, Tinggal step terakhir, Verifikasi code yang si submit user, Codenya seperti dibawah ini.
<?php
require_once '/lib/GoogleAuthenticator.php';
// inisilisasi PHPGangsta_GoogleAuthenticator() class
$authenticator = new PHPGangsta_GoogleAuthenticator();
// Mendapatkan secret code
$secret = "KUR3ZICXYN7ZK5C3"; // Replace dengan secret yang didapat tadi
echo $secret;
/*
Generate QR code untuk di scan dengan APP Google Authenticator,
Kita akan menggunakan API GET google chart yang sudah include di PHPGangsta class
*/
$website = "rizalfakhri.com"; // Replace dengan url website anda
$title = "RIZALBLOG"; // Title yang akan ditampilkan
$tolerance = 0; // Memberi waktu lebih sebelum kode expired.
// Generate! Booyah B| wkwkwk
$QRCode = $authenticator->getQRCodeGoogleUrl($title,$secret,$website);
// Tampilkan QR Code untuk di scan
echo "<img src='" . $QRCode . "'></img>";
/*
Membuat form sederhana untuk input user memasukan code yang di generate melalui
Aplikasi google authenticator, dan akan di verify dengan method verifyCode()
*/
// Proses data yang di submit user.
if(isset($_POST['btn-submit'])) {
$code = $_POST['code'];
$result = $authenticator->verifyCode($secret,$code,$tolerance);
if($result) {
// Jika TRUE maka akan menampilkan pesan code valid
// Code yang akan di eksekusi jika valid misalnya berhail login / apa gitu
echo "<p style='color:green'>KODE VALID ^_^</p>";
} else {
// Jika FALSE maka menampilkan kode tidak valid
// Code yang akan di eksekusi jika tidak valid, misal error / apa gitu
echo "<p style='color:red'>KODE TIDAK VALID!</p>";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Belajar Google Authenticator</title>
</head>
<body>
<br />
<form method="post">
Masukan Code Yang Di Generate Google Authenticator.<br />
<input type="text" name="code" required><br />
<button type="submit" name="btn-submit">SUBMIT</button>
</form>
</body>
</html>
Yap sudah selesai :D, Silahkan download aplikasi google authenticator untuk testing di Google Play Store / App store. Dan scan barcodenya, Nanti akan muncul code masukan codenya di inputan dan cek codenya apakah valid / tidak.Ini hanya sedikit contoh penggunaan Google Authenticator di aplikasi kalian, Silahkan kembangkan sendiri :D.


