2FA with Laravel
Nhân việc công ty yêu cầu mọi người phải cài đặt xác thực hai bước (2FA) cho tài khoản Github để nâng cao tính bảo mật. Nhưng Github lại không hỗ trợ SMS đầu số của Việt Nam. Nên chúng ta phải sử dụng phương thức thứ hai của Github, đó là sử dụng Authenticator của Google để verify. Mình thấy chức ...
Nhân việc công ty yêu cầu mọi người phải cài đặt xác thực hai bước (2FA) cho tài khoản Github để nâng cao tính bảo mật. Nhưng Github lại không hỗ trợ SMS đầu số của Việt Nam. Nên chúng ta phải sử dụng phương thức thứ hai của Github, đó là sử dụng Authenticator của Google để verify. Mình thấy chức năng này thật sự là hay ho. Nên mới tìm hiểu về nó và viết bài viết này. Trọng tâm của bài viết này không đi sâu về Google Authenticator làm việc như thế nào mà chỉ đơn giản là làm sao để xây dựng một ứng dụng hỗ trợ việc xác thực hai bước để nâng cao tính bảo mật và bảo vệ người dùng website của chúng ta bằng Google Authenticator. Chúng ta cùng đi tìm hiểu từng bước để xây dựng một ứng dụng đơn giản có hỗ trợ 2FA nhé. Mình chọn Laravel 5.7 để làm việc. Nào, bắt đầu thôi.
Đầu tiên, chúng ta cần tạo một project Laravel:
composer create-project laravel/laravel laravel-2fa
Sau khi tạo xong, chúng ta thực hiện tạo database và cài đặt các thông số tương ứng trong file .env:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=<Database name> DB_USERNAME=<Database username> DB_PASSWORD=<Database password>
OK, trong demo này chúng ta không sử dụng gì nhiều nên sẽ dùng mặc định luôn hai migrations của Laravel là CreateUsersTable và CreatePasswordResetsTable, nhưng sau khi cài đặt cấu hình database xong, chúng ta chưa chạy migrate vội mà sẽ tạo một migration để thêm một cột là secret_code cho từng user để lưu mã bí mật do Authenticator (gọi tắt cho ứng dụng Google Authenticator cho nhanh nhá