mcpField
B
better-auth

better-auth

github.com/oakossセキュリティ20106 回インストール11 週間前に更新
リポジトリ

better-auth について

better-authは、アプリに認証機能を組み込む開発者向けの認証ライブラリと設定ガイドです。セッション、データベース設定、パスワードやソーシャルログインなどのプラグインを扱います。

主な機能

  1. 01パスワードとソーシャルログインの設定
  2. 02複数のセッション方式
  3. 03組織や二要素認証のプラグイン
  4. 04データベースアダプターと設定の案内
  5. 05移行とトラブルシューティングの資料

活用シーン

  1. 01パスワード認証やソーシャル認証を設定
  2. 02組織管理や二要素認証を追加
  3. 03セッション、データベース、OAuthの問題を調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill better-auth

インストール後、Claude Code で/better-authを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
configuration.md
database-adapters.md
email-password.md
frameworks.md
migration-guides.md
organizations.md
plugins.md
sessions.md
troubleshooting.md
two-factor.md

詳細

better-auth

パッケージ: [email protected](v1.4.0以降はESMのみ) ドキュメント: https://better-auth.com/docs | GitHub: https://github.com/better-auth/better-auth

環境設定

変数用途
BETTER_AUTH_SECRET暗号化シークレット(32文字以上)。生成方法: openssl rand -base64 32
BETTER_AUTH_URLベースURL(例: https://example.com)

環境変数が設定されていない場合にのみ、設定でbaseURL/secretを定義してください。CLIは次の場所でauth.tsを探します: ./、./lib、./utils、または./src。

コア設定オプション

オプション備考
appName表示名(任意)
baseURLBETTER_AUTH_URLが設定されていない場合のみ
basePathデフォルトは/api/auth。ルートには/を設定します。
secretBETTER_AUTH_SECRETが設定されていない場合のみ
databaseステートレスモード(v1.4以降)を使用する場合を除き必須
secondaryStorageセッションとレート制限用のRedis/KV
emailAndPassword有効化するには{ enabled: true }を指定
socialProviders{ google: { clientId, clientSecret }, ... }
pluginsプラグインの配列
trustedOriginsCSRFの許可リスト

プラグインリファレンス

プラグイン説明
twoFactorTOTP、メールOTP、バックアップコード
organizationマルチテナント組織、チーム、招待、RBAC
adminユーザー管理、なりすまし、利用停止
passkeyWebAuthnによるパスワードレスログイン
magicLinkメールを使ったパスワードレスログイン
jwtキーローテーションとJWKSに対応したJWTトークン
oauthProvider独自のOAuth 2.1プロバイダーを構築(別パッケージ@better-auth/oauth-provider)
ssoOIDC、OAuth2、SAML 2.0に対応したエンタープライズSSO(別パッケージ@better-auth/sso)
scimエンタープライズ向けユーザープロビジョニング(別パッケージ@better-auth/scim)
stripe決済とサブスクリプションの管理
bearerモバイル/CLI向けAPIトークン認証
apiKeyレート制限付きのトークンベース認証
oneTap手間のかからないGoogle One Tapサインイン
anonymousPIIを必要としないゲストユーザーアクセス
genericOAuthPKCEに対応したカスタムOAuthプロバイダー
emailOTPメールベースのワンタイムパスワード認証
phoneNumber電話番号/SMSベースのOTPサインイン
usernameユーザー名ベースのサインイン(メールの代替)
multiSession同じブラウザーで複数のアカウントを利用
openAPI/api/auth/referenceでインタラクティブなAPIドキュメントを提供

セッション戦略

戦略形式ユースケース
Compact(デフォルト)Base64url + HMAC-SHA256最小かつ最速
JWT標準の JWT相互運用可能
JWEA256CBC-HS512 暗号化最も安全

はじめに

新しいプロジェクトや Better Auth を初めてセットアップする場合は、公式の対話型セットアップスキルを使用してください。

npx skills add better-auth/skills -s create-auth-skill

このスキルでは、フレームワークの検出、データベースの選択、認証方式の選択、プラグインのセットアップを順に進め、初期設定を生成します。

避けるべきパターン

避けるべきパターン正しい方法
d1Adapter を使用するprovider: "sqlite" を指定した Drizzle または Kysely アダプターを使用します
設定でテーブル名を使用するDB のテーブル名ではなく、ORM のモデル名を使用します
プラグイン変更後に CLI を実行し忘れるnpx @better-auth/cli@latest generate を再実行します
tanstackStartCookies() を最後のプラグインにしない配列の最後のプラグインにする必要があります(TanStack Start)
ログイン状態の確認に session を使うsession?.user を確認します。session オブジェクトは常に truthy です
nodejs_compat フラグを設定し忘れるCloudflare Workers では wrangler.toml で必須です
認証で Kysely の CamelCasePlugin を使うプラグインを使用しない別の Kysely インスタンスを使用します
古い reactStartCookies のインポートを使うv1.4.14 で better-auth/tanstack-start の tanstackStartCookies に名称変更されました

よくある間違い

間違い正しいパターン
環境変数がすでに設定されているのに、設定で baseURL と secret を指定するBETTER_AUTH_URL と BETTER_AUTH_SECRET の環境変数が設定されていない場合に限り、設定でこれらを定義します
better-auth v1.4 以降で CommonJS の require 構文を使うbetter-auth は v1.4.0 以降 ESM 専用です。import 構文のみを使用してください
プラグインの追加や変更後に CLI の generate を再実行しないプラグイン変更後は、DB スキーマを更新するために必ず npx @better-auth/cli@latest generate を実行します
ログイン検出に session オブジェクトが truthy かどうかを使う代わりに session?.user を確認します。session オブジェクト自体は常に truthy です
Cloudflare D1 に d1Adapter を直接使うD1 との互換性のため、provider: "sqlite" を指定した Drizzle または Kysely アダプターを使用します

破壊的変更

バージョン変更
v1.4.14reactStartCookies は tanstackStartCookies に名称変更されました(better-auth/tanstack-start からインポート)
v1.4.6allowImpersonatingAdmins のデフォルト値が false になりました
v1.4.0ESM 専用(CommonJS 非対応)。SSO、SCIM、OAuth Provider は別パッケージに移動しました
v1.3.0複数チームのテーブル構造:新しい teamMembers テーブルが必要です

委任

認証に取り組む場合は、以下に委任してください。

  • application-security — セキュリティアーキテクチャと脅威モデリング
  • database — Drizzle ORM のスキーマとマイグレーション
  • tanstack-start — TanStack Start の統合パターン

リソース

参考資料

  • データベースアダプター — Drizzle、Kysely、Prisma のアダプター、Cloudflare Workers のファクトリーパターン
  • セッション管理 — Cookie キャッシュ、ステートレスセッション、ストレージの優先順位、freshAge の制約
  • プラグインとソーシャル認証 — プラグインの設定、OAuth 2.1 プロバイダー、管理者 RBAC、ソーシャルプロバイダーのスコープ
  • メールとパスワード — 確認、パスワードのリセット、タイミング攻撃の防止、ハッシュ化(scrypt、argon2)、トークンのセキュリティ
  • 二要素認証 — TOTP、メール/SMS OTP、バックアップコード、信頼済みデバイス、2FA のセッションフロー
  • 組織 — マルチテナント組織、チーム、招待、RBAC、動的アクセス制御、ライフサイクルフック
  • 設定 — ユーザー/アカウントの設定、レート制限、フック、CSRF、信頼済みオリジン、Cookie/OAuth のセキュリティ、本番環境のチェックリスト
  • フレームワークとの統合 — TanStack Start のセットアップ、Expo/React Native、クライアントのインポート、型安全性
  • 移行ガイド — スキーママッピングとセッション戦略を使用して、NextAuth/Auth.js、Clerk、Supabase Auth から移行する方法
  • トラブルシューティング — D1 の整合性、CORS、OAuth リダイレクト、管理者の 403、nanostore の更新、既知のバグ

コメント