本文へスキップ

SaaSにパスキーとログイン機能を、認証サービスなしで

最終更新:

Seedは、パスキー、メールのログインリンク、Google、GitHubでのログインに対応し、その検証はサーバー上の自前のAPIが行います。外部の認証サービスは使いません。パスワード、パスキー、ログインリンクはデプロイした時点で使え、ユーザー単位の料金はかかりません。GoogleとGitHubは、それぞれenvファイルに2つのキーが必要です。

できること

  • パスワードはWeb CryptoのPBKDF2-SHA-256でハッシュ化(デフォルトで60万回)
  • 署名付きのセッションCookieと、すべてのログインイベントの監査ログ
  • 個人用APIトークンは鍵付きハッシュとしてのみ保存
  • パスキー:保存するのは公開鍵だけで、ログインのチャレンジは1回限り有効
  • マジックリンク:1つのリンクでログインも登録もでき、1回限り・15分間有効で、ハッシュとしてのみ保存
  • ゲストアカウント(匿名ログイン):訪問者はログイン方法なしでワンクリックで始め、あとから同じアカウントにメールアドレスとパスワード、Google、GitHub、パスキーを追加できます
  • パスワードの誤入力は、ネットワークアドレスをまたいでログイン名ごとに数え、上限を超えると短時間ロック

仕組み

APIがすべてのログインを自ら検証し、署名付きのセッションCookieを返します。パスキーはブラウザ標準のWebAuthnを使い、サーバーが保存するのは公開鍵だけで、ログインのチャレンジは1回限り有効です。ログインリンクはログインにも登録にも使え、1回限り・15分間有効で、ハッシュとしてのみ保存されます。

認証アプリを使えば2段階認証を追加できます。プロフィールには、アカウントに入るすべての方法とログイン中のすべてのデバイスが一覧表示され、ログイン方法を変更するときは本人確認を求めてメールで通知します。訪問者はゲストアカウントで始めて、あとからログイン方法を追加することもできます。

プロフィールのセキュリティページ。パスワード、「パスキーを追加」ボタン、オンになった2段階認証、ログイン中のデバイス一覧の上部が見えます。

よくある質問

認証サービスは必要ですか?

いいえ。パスワード、パスキー、ログインリンク、そしてGoogleとGitHubからの応答は、Seed自身のAPIがサーバー上で検証するので、ユーザー単位の料金は一切かかりません。

Seedはパスキーに対応していますか?

はい。ユーザーはプロフィールでパスキーを追加し、それでログインできます。サーバーが保存するのは公開鍵だけで、ログインのチャレンジは1回限り有効です。

Seedに2段階認証はありますか?

はい。認証アプリのワンタイムコードをログイン時に求めます。GoogleやGitHubでログインした場合も同様です。

GoogleやGitHubでのログインを使わないこともできますか?

はい。どちらも、envファイルに2つの変数を両方設定するまではオフなので、設定しなければオフのままです。

SeedはNodeやBunで動きますか?

まだです。Seedは現在Denoで動いており、Deno・Node・Bunのどれでも動くようにする作業を進めています(#623)。機能ページのランタイム計画をご覧ください。

1分で動くところを見てみましょう

デモは、初日から手に入るアプリそのものです。登録なしで開けて、ゲストアカウントには最初からサンプルデータが入っています。

ほかの機能

グループとロール

閲覧者からオーナーまでのロール付きグループ、招待、アクティビティログ。

グループとロールについて詳しく読む

課金

無料プラン、トライアル、猶予期間付きの、メンバー単位のStripe課金。

課金について詳しく読む

リアルタイム同期

あるタブで保存した変更が、再読み込みなしでほかの開いているタブすべてに表示されます。

リアルタイム同期について詳しく読む

すべての機能 Seedとほかのスターターの比較