Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Senior Filament

Як увімкнути багатофакторну автентифікацію в панелі Filament і які в неї обмеження?

Filament 5 має вбудовану багатофакторну автентифікацію (MFA) з двома провайдерами: застосунок-автентифікатор (TOTP-коди, Google Authenticator, 1Password) і коди на email.

Застосунок-автентифікатор:

Schema::table('users', function (Blueprint $table) {
    $table->text('app_authentication_secret')->nullable();
    $table->text('app_authentication_recovery_codes')->nullable();
});
use Filament\Auth\MultiFactor\App\Concerns\InteractsWithAppAuthentication;
use Filament\Auth\MultiFactor\App\Concerns\InteractsWithAppAuthenticationRecovery;
use Filament\Auth\MultiFactor\App\Contracts\HasAppAuthentication;
use Filament\Auth\MultiFactor\App\Contracts\HasAppAuthenticationRecovery;

class User extends Authenticatable implements FilamentUser, HasAppAuthentication, HasAppAuthenticationRecovery
{
    use InteractsWithAppAuthentication;
    use InteractsWithAppAuthenticationRecovery;
}
use Filament\Auth\MultiFactor\App\AppAuthentication;

$panel->multiFactorAuthentication([
    AppAuthentication::make()->recoverable(),
], isRequired: true);

Користувачі налаштовують MFA на сторінці профілю, тож у панелі має бути ввімкнено ->profile(). isRequired: true змушує налаштувати MFA перед роботою з панеллю. recoverable() дає 8 кодів відновлення на випадок втрати телефона.

Важливі деталі:

  • трейт додає секрету каст encrypted і ховає його із серіалізації. Секрет зашифровано ключем APP_KEY: якщо змінити ключ без APP_PREVIOUS_KEYS, усі налаштовані автентифікатори перестануть працювати;
  • коди відновлення одноразові - використаний код видаляється, а нові користувач генерує в профілі;
  • перевірка MFA відбувається до входу в систему, тож окремий middleware на маршрути панелі не потрібен.

Обмеження, про які варто пам'ятати:

  • MFA захищає лише вхід через панель. Якщо застосунок має власний вхід (сайт, API), користувач, авторизований там, відкриє панель без другого фактора, якщо MFA для нього вже налаштовано, але не вимагається повторно;
  • email-коди слабші за застосунок: захищеність дорівнює захищеності поштової скриньки;
  • адміністраторам із доступом до чутливих даних MFA варто робити обов'язковою, а не опційною.

Докладніше в документації: Багатофакторна автентифікація

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання