Laravel Fortify는 시간 기반 일회성 비밀번호 (TOTP)를 통한 2 단계 인증 (2FA)을 지원하는 Laravel 용 백엔드 인증 패키지입니다. 사용자가 고용하는 TOTP 클라이언트 응용 프로그램에 유연하고 불가지론 적입니다. 즉, Google 인증기에 구체적으로 묶지 않으며 Authy를 포함한 TOTP 기반 인증 앱과 함께 작업 할 수 있습니다.
Laravel Fortify가 2FA를 위해하는 일
Laravel Fortify는 2FA 비밀 키를 생성하고, 안전하게 저장하고, 복구 코드를 생성하며, 로그인하는 동안 TOTP 토큰을 검증하기위한 백엔드 로직을 제공합니다. 표준 TOTP 알고리즘 (RFC 6238)을 지원하는 모든 인증기 앱에서 생성 된 일회성 비밀번호를 확인하기 위해 사용자의 2 요인 비밀 키를 사용합니다. Fortify 자체는 사용자가 사용해야하는 모바일 또는 데스크탑 앱을 의무화하거나 제한하지 않습니다.
Google 인증기 대신 Authy 사용
Authy와 Google Authenticator는 모두 TOTP 기반 Authenticator 앱입니다. 둘 다 설정 중 (일반적으로 QR 코드를 스캔하여) 공유하는 비밀 키를 기반으로 30 초마다 6 자리 코드를 생성합니다. Laravel Fortify는이 표준을 지원하는 모든 클라이언트 앱과 완벽하게 작동합니다. 따라서 Laravel Fortify와 함께 Google 인증기 대신 Authy를 절대적으로 사용할 수 있습니다.
이 맥락에서 Authy 및 Google Authenticator에 대한 핵심 요점 :
- 호환성 : Authy는 Google Authenticator와 동일한 TOTP 표준을 사용하므로 Laravel Fortify의 2FA 설정은 Laravel 백엔드를 변경하지 않고도 앱과 함께 작동합니다.
-사용자 경험 : Authy는 장치 전체의 토큰 동기화 (다중 부호 지원), 암호화 된 클라우드 백업 및 데스크탑 앱 (역사적으로 현재 모바일 중심)과 같은 Google 인증기보다 몇 가지 장점을 제공하여 더 나은 사용자 경험을 제공 할 수 있습니다.
- 보안 : Authy는 앱에서 PIN 보호 및 생체 인식 보안 옵션과 암호화 된 백업 옵션이 있으며 Google Authenticator는 암호화 된 클라우드 백업 및 다중 장치 동기화가 부족합니다. 이러한 기능을 사용하면 사용자의 관점에서 장치 손실에 대해보다 사용자 친화적이고 탄력적 인 기능을 할 수 있습니다.
- Laravel Fortify 설정 : Laravel Fortify 구현의 유일한 변경 사항은 Google 인증기 대신 Authy에서 스캔 할 QR 코드 또는 비밀 키를 사용자에게 제공하는 것입니다. 두 앱 모두 동일한 형식을 읽으므로 QR Code Fortify는 어느 앱을 사용하여 상자 밖으로 작업을 생성합니다.
구현 고려 사항
1. Frontend QR 코드 디스플레이 : 2FA를 활성화 할 때 Fortify는 일반적으로 비밀 키를 기반으로 QR 코드를 생성합니다. 이 QR 코드는 Authy 또는 Google Authenticator 앱에서 스캔 할 수 있습니다. 프론트 엔드는이 QR 코드를 렌더링하면 사용자가 선호하는 앱을 선택할 수 있습니다. 백엔드 코드 변경이 필요하지 않습니다.
2. 확인 단계 : Laravel Fortify와 함께 발생하는 한 가지 문제는 입력 된 코드를 확인하지 않고 2FA를 활성화하면 설정을 올바르게 완료하지 않으면 사용자를 고정시킬 수 있다는 것입니다. QR 코드를 스캔 한 후 사용자가 Authy (또는 Google Authenticator)가 생성 한 코드를 입력하는 확인 단계 구현은 모범 사례입니다. 사용 된 인증 앱에 관계없이 적용됩니다.
3. 복구 코드 : Fortify는 사용자가 Authenticator 앱에 대한 액세스 권한을 잃어버린 경우 2FA 바이 패스에 대한 복구 코드를 제공합니다. 이 코드는 앱 선택 (Authy 또는 Google Authenticator)과 독립적으로 작동합니다.
사용자 관점과의 차이 요약
- authy 장점 : **
- 2FA 토큰의 다중 기기 지원 및 자동 동기화.
- 장치 손실에 대한 토큰을 잃지 않도록 암호화 된 클라우드 백업.
- 앱의 선택적 핀 및 생체 인식 보안.
- 데스크탑 및 브라우저 앱 지원 (일부 데스크탑 앱은 2024 년 초에 중단되었습니다).
- 푸시 기반 인증 (표준 TOTP는 아니지만 다른 구현과 관련이 있음).
- Google 인증기 장점 : **
- 많은 서비스에서 더 널리 알려지고 지원됩니다.
- 더 간단한 앱, 덜 복잡한 지원 인프라 (계정 없음, 백업 없음).
- 초기 설정 후 완전히 오프라인 (클라우드 백업 없음).
Laravel portify 통합 관점에서, 이러한 차이는 어느 앱의 TOTP 코드가 강화에 의해 동일한 방식으로 검증되기 때문에 이러한 차이는 아무런 영향을 미치지 않습니다.
강화 사용에 대한 추가 메모
Laravel Fortify는 프론트 엔드보기 또는 UI를 제공하지 않습니다. 인증을위한 백엔드 서비스를 제공합니다. 많은 개발자들이 Laravel Jetstream 또는 기타 UI 키트와 함께 Fortify를 사용합니다. UI에 관계없이 핵심은 Fortify가 2FA 비밀을 생성하고 코드를 검증하여 사용자에게 Authenticator 앱을 선택하는 것입니다.
UX를 개선하거나 계정 복구를 더 잘 처리하기 위해 사용자 정의가 필요한 경우 ( "Two_factor_Confirmed"플래그 추가, 뷰 사용자 정의 등)는 Fortify 레이어에서 구현 될 수 있지만 Authy와 Google Authenticator 사이의 선택과 무관합니다.
결론
예, Laravel Fortify의 Google Authenticator 대신 Authy를 사용할 수 있습니다. Backend 2FA 구현에는 변경이 필요하지 않습니다. 두 앱 모두 Fortify가 완전히 지원하는 동일한 TOTP 표준을 사용합니다. Authy를 선택하면 특히 장치 손실 또는 다중 장치 액세스 시나리오에서 사용자가 향상된 유용성 및 백업 기능을 제공 할 수 있지만 Laravel 개발자 관점에서 통합은 동일하게 유지됩니다. 사용자는 단순히 선호하는 앱으로 Fortify가 제공 한 QR 코드를 스캔하여 2FA를 설정합니다.
이러한 유연성은 설계에 의한 것이므로 Laravel Fortify는 Google Authenticator, Authy, Microsoft Authenticator 등을 포함하여 표준 TOTP 코드를 생성하는 모든 앱과 함께 작동 할 수 있습니다.