DEV Community

スシロー
スシロー

Posted on

【2026】Auth0 代替 (Clerk/Supabase Auth/WorkOS):料金・移行コストで選ぶ

結論(おすすめ1つ)

ほとんどのプロダクトには Clerk を選ぶ。

Auth0 の「設定が多すぎて疲れる」「ダッシュボードが重い」という不満を解消しつつ、Next.js / React との統合が三者の中で最も洗練されている。無料枠でスタートアップの初期フェーズをカバーでき、コンポーネントベースの認証 UI により実装工数を大幅に削減できる。ただし、エンタープライズ向け SAML / SCIM の整備が最優先要件であれば WorkOS を先に検討すること。

比較表(料金/無料枠/移行コスト/対応言語)

項目 Clerk Supabase Auth WorkOS
料金(有料プラン) 公式の料金ページで要確認 公式の料金ページで要確認 公式の料金ページで要確認
無料枠 MAU 上限あり(公式要確認) Supabase 無料プランに含む 開発用は無料、本番は公式要確認
移行コスト 中(JWT / セッション層の再実装) 中〜高(DB と密結合) 低〜中(SAML 置換用途は低め)
主要 SDK JS/TS 中心(React / Next.js / Remix) JS/TS / Python / Go / Dart など多言語 Node / Python / Ruby / Go / PHP / Java / .NET
セルフホスト 不可 可(OSS) 不可
SSO / SAML 有料プランで対応 基本機能のみ 設計思想の中核

移行手順(Auth0 → Clerk)

Step 1: SDK インストールと環境変数の設定

npm install @clerk/nextjs
Enter fullscreen mode Exit fullscreen mode
# .env.local
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxx
CLERK_SECRET_KEY=sk_test_xxxx
Enter fullscreen mode Exit fullscreen mode

Step 2: ミドルウェアの差し替え

Auth0 の withApiAuthRequired を Clerk の authMiddleware へ置き換える。

// middleware.ts
import { authMiddleware } from "@clerk/nextjs";

export default authMiddleware({
  publicRoutes: ["/", "/api/public(.*)"],
});

export const config = {
  matcher: ["/((?!_next|.*\\..*).*)"],
};
Enter fullscreen mode Exit fullscreen mode

Step 3: Auth0 ユーザーの移行

Auth0 Management API でユーザーをエクスポートし、Clerk Backend API へインポートする。bcrypt ハッシュはそのまま移行できる。

# Auth0 CLI でユーザーをエクスポート
auth0 users export --format json > users.json

# Clerk へ 1 件ずつインポート(バルク処理はスクリプト化推奨)
curl -X POST https://api.clerk.com/v1/users \
  -H "Authorization: Bearer $CLERK_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "email_address": ["user@example.com"],
    "password_digest": "<bcrypt_hash>",
    "password_hasher": "bcrypt"
  }'
Enter fullscreen mode Exit fullscreen mode

Step 4: UI コンポーネントの差し替え

// Before (Auth0)
import { useUser } from "@auth0/nextjs-auth0/client";

// After (Clerk)
import { useUser, SignIn, UserButton } from "@clerk/nextjs";

// 認証ページは 1 行で完結
export default function SignInPage() {
  return <SignIn />;
}
Enter fullscreen mode Exit fullscreen mode

カスタマイズは Clerk ダッシュボードの Appearance 設定か CSS 変数で対応できる。Auth0 のカスタムページ実装をまるごと捨てられる点が最大の時短になる。

向き不向き

Clerk が向くチーム・規模

  • Next.js / React ベースのプロダクトを開発している
  • スタートアップ〜中規模 SaaS(MAU 数千〜数万規模)
  • 認証 UI を自前で作りたくない、または Auth0 のルールエディタに疲弊している
  • フロントエンド中心のチームで、認証をサクッと終わらせたい

Supabase Auth が向くチーム・規模

  • すでに Supabase(PostgreSQL)をメイン DB として採用している
  • セルフホストによるコスト上限管理や GDPR 対応のデータ所在地指定が必要
  • Python / Go などマルチ言語バックエンド構成で Auth0 SDK の偏りが問題になっている

WorkOS が向くチーム・規模

  • B2B SaaS でエンタープライズ契約が収益の中心
  • 顧客の IT 部門が Okta / Azure AD を運用しており、SAML SSO が商談の前提条件
  • SCIM によるユーザープロビジョニング自動化が必要な規模

避けるべきケース

  • Clerk: モバイルネイティブ(iOS / Android)がメインの場合は SDK が発展途上。高トラフィック時の従量課金は事前にシミュレーションすること
  • Supabase Auth: Supabase 以外の DB スタックでは恩恵が薄く、Auth だけ切り出すと管理オーバーヘッドが増える
  • WorkOS: B2C アプリや MAU ベースのグロースモデルには設計が合わない。エンタープライズ専用のプライシング構造を前提に設計されている

Top comments (0)