Postingan kali ini saya akan memberikan catatan penting untuk kalian semua yang ingin memberikan keamanan pada aplikasi kalian. Dengan google authenticator kalian bisa memproteksi login atau mungkin hal lain seperti accepting dokumen digital sebagai tanda bahwa dokumen telah diverifikasi oleh atasan. Atau mungkin kalian memiliki hal yang lebih keren lagi.
Berikut ini adalah cara untuk menggunakan google authenticator di proyek laravel kalian. Langkah mudahnya sebagai berikut:
Langkah 1: Install Package Composer
composer require pragmarx/google2fa-laravel
Langkah 2: Configurasi Package
Buka file "config/app.php" dan tambahkan provider ke dalam file.
PragmaRX\Google2FA\Vendor\Laravel\ServiceProvider::class,
Tambahkan aliases juga kedalam file:
'Google2FA' => PragmaRX\Google2FA\Vendor\Laravel\Facade::class,
Langkah 4: Menggunakan Google Authenticator
Contoh disini kita akan menggunakan google authenticator saat login. Buat controller dan kita akan beri nama LoginController dalam file LoginController masukan ini dipaling atas:
use Google2FA;
Dan buat sebuah function dengan nama fungsi sebagai berikut:
public function show2faForm()
{
return view('auth.2fa');
}
Pada file route tambahkan rute baru seperti ini:
Route::get('/2fa', 'Auth\LoginController@show2faForm')->name('2fa.show');
Buat file blade seperti ini:
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Two Factor Authentication') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('2fa.validate') }}">
@csrf
<div class="form-group row">
<label for="2fa" class="col-md-4 col-form-label text-md-right">{{ __('2FA Code') }}</label>
<div class="col-md-6">
<input id="2fa" type="text" class="form-control @error('2fa') is-invalid @enderror" name="2fa" required autocomplete="off">
@error('2fa')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Validate') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Buat 1 route lagi untuk post:
Route::post('/2fa/validate', 'Auth\LoginController@validate2fa')->name('2fa.validate');
Tambahkan 1 fungsi lagi di LoginController untuk memproses 2fa google authenticator seperti ini:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Google2FA;
public function validate2fa(Request $request)
{
$validatedData = $request->validate([
'2fa' => 'required|numeric',
]);
$user = Auth::user();
$google2fa = app('pragmarx.google2fa');
if ($google2fa->verifyKey($user->google2fa_secret, $validatedData['2fa'])) {
// Kode otentikasi dua faktor valid
// Redirect ke halaman utama atau halaman lain yang sesuai
return redirect()->route('home');
} else {
// Kode otentikasi dua faktor tidak valid
return back()->withErrors(['2fa' => 'Invalid 2FA code']);
}
}
Dalam contoh ini, kita menggunakan Google Authenticator untuk menambahkan otentikasi dua faktor saat login. Pastikan kalian sudah mengonfigurasi Google Authenticator sebelumnya dan menyimpan Google Authenticator Secret key dalam database ataupun file env.
Selain itu, pastikan bahwa kalian memiliki halaman otentikasi dua faktor yang sesuai dengan kebutuhan aplikasi.
Ini merupakan panduan dasar untuk mengintegrasikan Google Authenticator dengan Laravel. Pastikan untuk mengamankan kode rahasia Google Authenticator dengan baik supaya tidak disalahgunakan oleh orang yang tidak bertanggung jawab.