Cum se implementează 2FA într-o aplicație Laravel?

Configurare noua (How To)

Situatie

Tot mai multe aplicatii au implementat 2FA, iar pentru aplicatiile cu laravel va invit sa parcurgeti urmatorul articol.

Solutie

Iată un ghid pas cu pas pentru a implementa autentificarea cu doi factori (2FA) într-o aplicație Laravel:

Instalați Biblioteca Google Authenticator: În aplicația dvs. Laravel, puteți utiliza biblioteca Google Authenticator pentru a gestiona 2FA. Puteți instala această bibliotecă prin compozitor rulând următoarea comandă în terminalul dvs.:

composer require pragmarx/google2fa

Creați un tabel de bază de date pentru a stoca secretele 2FA: Va trebui să creați un nou tabel de bază de date pentru a stoca cheile secrete generate de biblioteca Google Authenticator. Puteți utiliza următoarea comandă Artisan pentru a crea o nouă migrare:

php artisan make:migration create_two_factor_authentication_table

Actualizați fișierul de migrare pentru a crea o coloană secretă: În fișierul de migrare nou creat, trebuie să adăugați o coloană secretă la tabelul two_factor_authentication. Puteți face acest lucru adăugând următorul cod la metoda up:

Schema::create(‘two_factor_authentication’, function (Blueprint $table) {
            $table->id();
            $table->unsignedBigInteger(‘user_id’);
            $table->string(‘secret’);
            $table->timestamps();
});

Rulați migrarea bazei de date: După actualizarea fișierului de migrare, puteți rula următoarea comandă Artisan pentru a crea noul tabel al bazei de date:

php artisan migrate

Adăugați 2FA la modelul utilizatorului: Apoi, trebuie să adăugați o relație între modelul User și modelul TwoFactorAuthentication. Puteți face acest lucru adăugând următorul cod la modelul User:

public function twoFactorAuthentication()
{
        return $this->hasOne(TwoFactorAuthentication::class);
}

Creați un nou controler pentru gestionarea 2FA: trebuie să creați un nou controler pentru a gestiona logica 2FA în aplicația dvs. Puteți folosi următoarea comandă Artisan pentru a crea un nou controler:

php artisan make:controller TwoFactorAuthenticationController

Generați secretul 2FA: în TwoFactorAuthenticationController, trebuie să adăugați o metodă pentru a genera secretul 2FA pentru utilizator. Puteți face acest lucru utilizând biblioteca Google2FA.

use PragmaRX\Google2FA\Google2FA;

public function generateSecret(Request $request)
    {
        $user = $request->user();
        $google2fa = new Google2FA();
        $secret = $google2fa->generateSecretKey();
       
        $user->twoFactorAuthentication()->create([
            ‘secret’ => $secret
        ]);
       
        return response()->json([
            ‘secret’ => $secret
        ]);
    }

Verificați simbolul 2FA: Apoi, trebuie să adăugați o metodă pentru a verifica simbolul 2FA introdus de utilizator. Puteți face acest lucru utilizând metoda verifyKey a bibliotecii Google2FA.

public function verifyToken(Request $request)
    {
        $user = $request->user();
        $google2fa = new Google2FA();
        $secret = $user->twoFactorAuthentication->secret;
    $token = $request->input(‘token’);
    if ($google2fa->verifyKey($secret, $token)) {
        // 2FA token is valid
        // Do the necessary actions
        return response()->json([
            ‘message’ => ‘2FA token is valid’
        ]);
    } else {
        // 2FA token is invalid
        // Return error message
        return response()->json([
            ‘message’ => ‘2FA token is invalid’
        ], 401);
    }
}

Actualizați logica de autentificare: în sfârșit, trebuie să actualizați logica de autentificare în aplicația dvs. pentru a include pasul de verificare 2FA. Puteți face acest lucru adăugând o verificare în procesul de conectare pentru a verifica dacă utilizatorul are 2FA activat și, dacă da, solicitați-i să introducă simbolul 2FA.

Testați implementarea: După ce ați urmat toți pașii, ar trebui să puteți testa implementarea 2FA în aplicația dvs. Laravel. Încercați să vă conectați la aplicația dvs. și verificați dacă tokenul 2FA este solicitat și verificat corect.

Tip solutie

Permanent

Voteaza

(9 din 15 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?