Laravel Fortifyは、Timeベースのワンタイムパスワード(TOTP)を介して2要素認証(2FA)をサポートするLaravel向けのバックエンド認証パッケージです。これは、TOTPクライアントアプリケーションユーザーが採用している柔軟性があり、不可知論的です。つまり、Google Authenticatorに特に結びつくのではなく、Authyを含むTOTPベースの認証アプリと連携できます。
Laravel Fortifyが2FAで行うこと
Laravel Fortifyは、2FAシークレットキーを生成し、安全に保存し、回復コードを生成し、ログイン中にTOTPトークンを検証するバックエンドロジックを提供します。ユーザーの2因子シークレットキーを使用して、標準のTOTPアルゴリズム(RFC 6238)をサポートするAuthenticatorアプリによって生成された1回限りのパスワードを確認します。 Fortify自体は、ユーザーが使用する必要があるモバイルまたはデスクトップアプリを義務付けたり制限したりしません。
Google Authenticatorの代わりにAuthyを使用します
AuthyとGoogle AuthenticatorはどちらもTOTPベースの認証アプリです。どちらも、セットアップ中に共有される秘密キーに基づいて30秒ごとに6桁のコードを生成します(通常、QRコードをスキャンすることにより)。 Laravel Fortifyは、この標準をサポートするクライアントアプリでシームレスに機能します。したがって、Laravel Fortifyを使用してGoogle Authenticatorの代わりにAuthyを絶対に使用できます。
この文脈でのAuthyとGoogle Authenticatorに関する重要なポイント:
- 互換性:AuthyはGoogle Authenticatorと同じTOTP標準を使用しているため、Laravel Fortifyの2FAセットアップは、Laravelバックエンドに変更を加えることなく、いずれかのアプリと連携します。
- ユーザーエクスペリエンス:Authyは、デバイス全体のトークンの同期(マルチデバイスサポート)、暗号化されたクラウドバックアップ、デスクトップアプリ(歴史的に、現在モバイル中心)など、より優れたユーザーエクスペリエンスを作成できるなど、Google Authenticatorよりもいくつかの利点を提供します。
- セキュリティ:Authyには、アプリにPIN保護と生体認証セキュリティのオプションがあり、バックアップを暗号化しますが、Google Authenticatorには暗号化されたクラウドバックアップとマルチデバイス同期がありません。これらの機能により、Authyはユーザーの観点からのデバイスの損失に対してよりユーザーフレンドリーで回復力があります。
- Laravel Fortifyのセットアップ:Laravel Fortifyの実装の唯一の変更は、Google Authenticatorの代わりにAuthyでスキャンするためにQRコードまたは秘密キーをユーザーに提供することです。どちらのアプリも同じ形式を読み取るため、QR Code Fortifyは、どちらのアプリでもWorksからWorks Out Outを生成します。
###実装に関する考慮事項
1。FRONTENDQRコードディスプレイ:2FAを有効にするとき、Fortifyは通常、シークレットキーに基づいてQRコードを生成します。このQRコードは、AuthyまたはGoogle Authenticatorアプリによってスキャンできます。フロントエンドはこのQRコードをレンダリングするだけで、ユーザーは優先アプリを選択できます。バックエンドコードの変更は必要ありません。
2。確認ステップ:Laravel Fortifyで発生する問題の1つは、入力されたコードを確認せずに2FAを有効にすると、セットアップが適切に完了しない場合、ユーザーがロックアウトする可能性があることです。 QRコードをスキャンした後、ユーザーがAuthy(またはGoogle Authenticator)によって生成されたコードをユーザーが入力する確認ステップを実装することは、ベストプラクティスです。これは、使用される認証アプリに関係なく適用されます。
3.リカバリコード:Fortifyは、ユーザーがAuthenticatorアプリへのアクセスを失った場合、2FAバイパスのリカバリコードを提供します。これらのコードは、アプリ(AuthyまたはGoogle Authenticator)の選択とは無関係に機能します。
###ユーザーの観点からの違いの要約
- 認証の利点:**
-2FAトークンのマルチデバイスサポートと自動同期。
- デバイスの損失でトークンを失わないように、クラウドバックアップを暗号化します。
- アプリのオプションのピンと生体認証セキュリティ。
- デスクトップおよびブラウザアプリのサポート(2024年初頭の時点でいくつかのデスクトップアプリは中止されました)。
- プッシュベースの認証(標準のTOTPではありませんが、他の実装により関連しています)。
- グーグル認証者の利点:**
- 多くのサービスでより広く知られ、サポートされています。
- よりシンプルなアプリ、複雑なバッキングインフラストラクチャ(アカウントなし、バックアップなし)。
- 最初のセットアップ後に完全にオフライン(クラウドバックアップなし)。
Laravel Fortifyの統合の観点から、これらの違いは、どちらのアプリからのTOTPコードがFortifyによって同じ方法で検証されているため、結果はありません。
Fortifyの使用に関する追加メモ
Laravel Fortifyは、フロントエンドビューまたはUIを提供しません。認証用のバックエンドサービスを提供します。多くの開発者は、Laravel Jetstreamまたは他のUIキットでFortifyを使用しています。 UIに関係なく、重要なのは、Fortifyが2FAの秘密を生成し、コードを検証し、認証者アプリの選択をユーザーに任せることです。
UXを改善したり、アカウントの回復を改善したりするためにカスタマイズが必要な場合(「Two_Factor_ConfirMed」フラグを追加、ビューをカスタマイズするなど)、Fortifyレイヤーに実装できますが、AuthyとGoogle認証者の選択とは無関係です。
### 結論
はい、Laravel FortifyでGoogle Authenticatorの代わりにAuthyを使用できます。バックエンド2FA実装に変更は必要ありません。両方のアプリは、Fortifyによって完全にサポートされている同じTOTP標準を使用しています。 Authyを選択すると、特にデバイスの損失またはマルチデバイスアクセスのシナリオで、ユーザーにユーザビリティとバックアップ機能の向上を提供できますが、Laravel開発者の観点からは、統合は同じままです。ユーザーは、Fortifyが提供するQRコードを、2FAをセットアップするために優先アプリを使用してスキャンするだけです。
この柔軟性は設計によるものであり、Google Authenticator、Authy、Microsoft Authenticatorなどを含むがこれらに限定されない標準のTOTPコードを生成するアプリでLaravel Fortifyが動作することができます。