Sushi SaaS の認証の仕組み
既定のログイン経路を確認し、認証方式、メール確認、MFA、テナント設計、不正対策のどれを維持するか判断します。
このガイドは、認証を単なるログイン画面ではなく、プロダクト上の判断として扱うためのものです。Sushi SaaS は Better Auth でユーザーの ID を管理し、スターター全体に必要なテナント分離、アカウント復旧、モデレーション、監査の規則を追加します。
既定のユーザージャーニー
- ユーザーはメールアドレスとパスワードで登録します。Google 用の二つの OAuth 認証情報が設定されていれば、Google ログインも使えます。
- パスワードで登録した場合は、メールアドレスの確認が必須です。確認後に、一度限りの新規登録クレジットをジョブキューへ追加できます。
- 登録時に個人用の組織を作ります。フックが途中で止まっても、後続の修復処理で補います。
- アカウントの状態と停止状況の確認を通過した場合だけ、セッションを作ります。
- パスワードを再設定した後は、既存のセッションを失効させます。
顧客アカウントでも二要素認証を利用できますが、顧客アプリでは任意です。独立した管理コンソールでは、admin_ro または admin_rw の権限に加えて、MFA が必須です。
設定は 7580470 の src/lib/auth.ts にあります。環境変数とコールバック URL は認証と管理を参照してください。
公開前に決めること
| 判断 | 既定の選択 | 変更する場面 |
|---|---|---|
| ログイン方法 | メールアドレスとパスワード。設定済みなら Google | パスワードレス認証、企業向け SSO、別の認証事業者が必要な場合 |
| メール確認 | パスワード登録では必須 | 未確認アカウントを許容できる場合。登録特典を渡す時点も再設計する |
| 顧客の MFA | 利用でき、使用はユーザーが選ぶ | 機密性の高い操作に追加認証または必須 MFA が必要な場合 |
| 管理者の MFA | 必須 | 同等に強い運用アクセス方針に置き換える場合を除き、維持する |
| ボット対策 | 有効時は Turnstile が認証情報とメール関連エンドポイントを保護。本番設定に不足があれば安全側に停止する | 別のエッジ制御や ID 基盤を使う場合。検証処理とテストも更新する |
| テナント作成 | 全アカウントに個人用の組織を作る | 常に一人で使う製品で、組織の範囲を全レイヤーから除く場合 |
メール確認だけを無効にして、新規登録クレジットの付与を確認フックに残してはいけません。付与処理を移動または削除するか、アカウントの信頼性を別の方法で確認するかを決めます。
本人確認と認可は別物
有効なセッションが示すのは「誰であるか」だけで、すべての組織データへの権限ではありません。組織内の役割が実行できる操作を、プランの権限が組織の利用できる機能を決めます。Sushi SaaS はこの三つを分離しています。
Better Auth の組織プラグインが owner、admin、member の仕組みを担い、アプリケーションサービスが利用人数の上限、最後の所有者の保護、全ユーザーが少なくとも一つの組織に属するという規則を追加します。汎用の組織削除は、認証テーブルだけを消して課金データやプロダクトデータを取り残すため、無効にしています。
役割やテナントの選択方法を変える前に、組織とチームを確認してください。
アカウント復旧と不正対策
Turnstile は、認証情報を扱うエンドポイントとメール関連のエンドポイントを保護できます。登録時の確認はパスワード認証と OAuth の両方を対象にし、セッション作成時にはログイン方法を問わず、停止中または削除処理中のアカウントを拒否します。ユーザーにはサーバーの生メッセージではなく、エラーコードに対応する翻訳済みの文面を表示します。
技術的な仕組みだけでなく、運用方針は自分で決める必要があります。誰がアカウントを停止できるか、異議申立てをどう扱うか、セッションの有効期間、保持するイベント、サポート担当者が変更できる範囲を定義してください。
本番前のテスト計画
- 新規登録、確認メールの再送、期限切れ、確認後のログインを試します。
- パスワード再設定後に、以前のセッションが無効になることを確認します。
- 本番オリジンですべての OAuth コールバックを試します。
- MFA の登録、検証、復旧、無効化を試し、バックアップコードが保護されることを確認します。
- 招待時の利用人数上限と、最後の所有者を守る処理を並行実行で試します。
- 二つの管理者権限を初期設定し、管理用オリジンで MFA が強制されることを確認します。
運用経路については管理コンソールの設定へ進んでください。本ガイドはコミット 7580470 に基づきます。