DEV Community

スシロー
スシロー

Posted on • Edited on

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

結論(おすすめ1つ)

Next.js / React を使うスタートアップ・個人開発者なら Clerk に乗り換えるべき

Auth0 は機能的に成熟しているが、価格体系が複雑で MAU 課金のスケールに悲鳴を上げるタイミングが早い。Clerk は UI コンポーネント込みで認証が10分で動き、ローカル開発体験が別次元に良い。価格モデルも透明で、無料枠のまま本番ローンチできる規模感がある。エンタープライズ SSO が最優先なら WorkOS、自前 Postgres で全制御したいなら Supabase Auth を選ぶ。


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

項目 Auth0 Clerk Supabase Auth WorkOS
料金モデル MAU 従量 MAU 従量 Supabase プラン内包 B2B 接続数従量
無料枠 公式の料金ページで要確認 公式の料金ページで要確認 公式の料金ページで要確認 公式の料金ページで要確認
移行コスト 中(JWT 発行元変更・UI 差し替え) 高(DB 移行・Row Level Security 設計) 中〜高(Enterprise SSO 設定が複雑)
SDK Node / Go / Python / Java 等 JS/TS 専用色が強い(公式 SDK: React, Next.js, Expo 等) 公式 JS/Dart SDK、非公式で他言語 Node / Python / Ruby / Go 等
セルフホスト 不可(Okta SaaS) 不可 可(Supabase OSS) 不可
SAML/SCIM Enterprise プランのみ Add-on あり 限定的 コア機能
MFA あり あり あり あり
ソーシャルログイン 多数 多数 主要プロバイダ 企業 IdP 中心

移行手順

ここでは Auth0 → Clerk への移行を想定する。

1. Clerk アカウント・アプリ作成

npm install @clerk/nextjs
Enter fullscreen mode Exit fullscreen mode

dashboard.clerk.com でアプリを作成し、.env.local に鍵を設定。

NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxx
CLERK_SECRET_KEY=sk_test_xxxx
Enter fullscreen mode Exit fullscreen mode

2. ミドルウェア設定(Next.js App Router)

// middleware.ts
import { clerkMiddleware, createRouteMatcher } from '@clerk/nextjs/server';

const isPublic = createRouteMatcher(['/sign-in(.*)', '/sign-up(.*)', '/api/public(.*)']);

export default clerkMiddleware((auth, req) => {
  if (!isPublic(req)) auth().protect();
});

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

3. Auth0 JWT → Clerk JWT の切り替え

Auth0 発行の既存セッションは即時無効になる。ユーザーに再ログインを要求するメンテナンス告知を事前に出すこと。ユーザーデータの移行は Auth0 Management API でエクスポートし、Clerk の Backend API /v1/users に POST する。

# Auth0 からユーザー一括エクスポート(Auth0 CLI)
auth0 users export --format json --fields email,name > users.json

# Clerk へインポート(パスワードなし→初回メールで再設定)
node scripts/import_to_clerk.js
Enter fullscreen mode Exit fullscreen mode
// scripts/import_to_clerk.js
const { clerkClient } = require('@clerk/nextjs/server');
const users = require('./users.json');

for (const u of users) {
  await clerkClient.users.createUser({
    emailAddress: [u.email],
    firstName: u.name?.split(' ')[0] ?? '',
    skipPasswordRequirement: true,
  });
}
Enter fullscreen mode Exit fullscreen mode

4. API ルートでのセッション検証を差し替え

// Before (Auth0)
import { getSession } from '@auth0/nextjs-auth0';

// After (Clerk)
import { auth } from '@clerk/nextjs/server';

export async function GET() {
  const { userId } = await auth();
  if (!userId) return new Response('Unauthorized', { status: 401 });
  // ...
}
Enter fullscreen mode Exit fullscreen mode

5. ソーシャルプロバイダ再設定

Clerk ダッシュボードで Google / GitHub 等の OAuth アプリを新規登録し直す。Auth0 で使っていた Client ID/Secret はそのまま使えないため、各プロバイダで別アプリとして作成すること。


向き不向き

Clerk が向く

  • Next.js / React 中心のスタートアップ<SignIn /> コンポーネント1行で認証 UI が完結し、開発速度が最大化される
  • 小〜中規模(MAU 数千〜数万):無料枠内またはコスパの良い価格帯で収まりやすい(公式料金ページで要確認)
  • デザインにこだわりたいチーム:Appearance API でコンポーネントの見た目を CSS 変数で細かく制御できる

Supabase Auth が向く

  • バックエンドも Supabase で統一するチーム:RLS と組み合わせることで DB レベルのアクセス制御が完結する
  • OSS でセルフホストしたい:GDPR 対応やデータ居住地要件が厳しい場合に有効
  • Postgres を既に使っている:ユーザーテーブルが同一 DB に入るためクエリが単純になる

WorkOS が向く

  • B2B SaaS で大企業顧客を狙うプロダクト:SAML SSO / SCIM プロビジョニングが最短で繋がる
  • IT 管理者が IdP 設定を求めてくる企業向け販売:Okta / Azure AD との接続実績が豊富

避けるべきケース

  • Clerk:モバイルアプリ(iOS/Android ネイティブ)がメインの場合、SDK の充実度で Auth0 や Firebase Auth に劣る場面がある
  • Supabase Auth:認証だけ切り出して使いたい場合は Supabase 全体への依存を負うため過剰になりがち
  • WorkOS:コンシューマー向け(BtoC)サービスには過剰設計かつ費用対効果が合わない
  • 共通:既存の Auth0 カスタムルール・Hooks が複雑に絡んでいる場合は、どのツールへ移行しても追加工数が大きくなる。移行前に Auth0 側のカスタムロジックをすべて棚卸しすること。

If you found this useful: I packaged 50 copy-paste AI debugging prompts + drop-in Claude Code config templates (CLAUDE.md, settings.json, MCP) into a small kit.
Launch deal: code START50 = 50% off → 50 AI Debugging Prompts + Claude Code Config Pack (about $6, 50% off applied)
New: my 10-chapter ebook Practical Claude Code — automation & unattended operation (about $9, 50% off applied)

Top comments (0)