DEV Community

スシロー
スシロー

Posted on

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

結論(おすすめ1つ)

乗り換え先の推薦:Clerk

Auth0 からの移行先として、大半の SPA/Next.js プロジェクトには Clerk が最もコストパフォーマンスが高い。理由は三点:① UI コンポーネントが同梱されており認証フローをほぼゼロ実装で置き換えられる、② JWT/Session Token の切り替えが設定一つで完結する、③ Auth0 の「Organizations」に相当するマルチテナント機能が標準搭載されている。WorkOS は SSO/SAML が最優先の B2B 向け、Supabase Auth は Supabase の DB を既に使っている場合に限り有利な選択肢だ。


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

項目 Auth0 Clerk Supabase Auth WorkOS
無料枠 MAU 公式料金ページで要確認 公式料金ページで要確認 公式料金ページで要確認 公式料金ページで要確認
有料開始価格 公式料金ページで要確認 公式料金ページで要確認 公式料金ページで要確認 公式料金ページで要確認
移行コスト 低〜中(SDK入替+JWT検証変更) 中(GoTrue API の理解が必要) 中〜高(SSO設定が前提)
SDK の充実度 ◎(React/Next.js/Remix 中心) ○(Supabase JS 中心) ○(Node/Go 中心)
対応言語 Node/Python/Go/Java 等 JS/TS(他は REST API) JS/TS/Dart/Python 等 Node/Python/Go/Ruby 等
マルチテナント 有(Organizations) 有(Organizations) 要自前実装 有(Enterprise SSO 中心)
エンタープライズ SSO 有(上位プランのみ) 限定的 ◎(中心機能)
セルフホスト 不可 不可 可(OSS) 不可

料金は変動が激しいため、各サービスの公式料金ページで必ず最新値を確認すること。


移行手順

Auth0 → Clerk への移行を例に、実際に動くコマンドと設定を示す。

Step 1:Clerk アプリを作成して API キーを取得

Clerk ダッシュボード(clerk.com)でアプリを新規作成し、Publishable Key と Secret Key を取得する。

Step 2:SDK を入れ替える

# Next.js の場合
npm install @clerk/nextjs

# 既存の Auth0 パッケージを削除
npm uninstall @auth0/nextjs-auth0
Enter fullscreen mode Exit fullscreen mode

Step 3:環境変数を差し替える

.env.local を以下のように更新する。

# 削除する Auth0 変数
# AUTH0_SECRET=...
# AUTH0_ISSUER_BASE_URL=...
# AUTH0_CLIENT_ID=...
# AUTH0_CLIENT_SECRET=...

# 追加する Clerk 変数
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_xxxxxxxxxx
CLERK_SECRET_KEY=sk_live_xxxxxxxxxx
Enter fullscreen mode Exit fullscreen mode

Step 4:ミドルウェアを置き換える

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

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

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

export const config = {
  matcher: [
    '/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico)).*)',
    '/(api|trpc)(.*)',
  ],
};
Enter fullscreen mode Exit fullscreen mode

Step 5:UI コンポーネントを差し替える

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

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

export function Header() {
  const { isSignedIn } = useUser();
  return (
    <header>
      {isSignedIn ? <UserButton afterSignOutUrl="/" /> : <SignInButton />}
    </header>
  );
}
Enter fullscreen mode Exit fullscreen mode

Step 6:既存ユーザーをインポートする

Auth0 の Management API でユーザーリストをエクスポートし、Clerk の Backend API でインポートする。Auth0 はパスワードハッシュをエクスポートできないため、初回ログイン時にパスワードリセットを促すフローを実装するのが現実的だ。

# Auth0 Management API でユーザーをエクスポート(要 Management API トークン)
curl -X GET "https://YOUR_DOMAIN.auth0.com/api/v2/users" \
  -H "Authorization: Bearer $AUTH0_MGMT_TOKEN" \
  -o users_export.json
Enter fullscreen mode Exit fullscreen mode
# Clerk Backend API でユーザーをインポート(Node スクリプト例)
node scripts/import_users_to_clerk.js
Enter fullscreen mode Exit fullscreen mode

向き不向き

Clerk が向くケース

  • Next.js/React 中心のチーム:公式コンポーネントをそのまま使えるため実装工数が最小で済む。
  • 1〜20 名規模のスタートアップ:Auth0 の設定複雑さに疲れており、すぐに動かしたい場合。
  • マルチテナント SaaS を構築している:Organizations が標準搭載されており追加実装が少ない。

Supabase Auth が向くケース

  • Supabase の PostgreSQL を既に使っている:Row Level Security と Auth を一体化できるため二重管理が不要になる。
  • セルフホストが必要なプロジェクト:Auth0・Clerk・WorkOS はすべてクラウド専用だが、Supabase はセルフホスト可能。

WorkOS が向くケース

  • エンタープライズ顧客への SAML/OIDC SSO が必須の B2B SaaS:この用途に特化しており、管理 UI が最も整っている。
  • Active Directory 連携(SCIM)が要件:ディレクトリ同期の実装コストが他と比べて大幅に低い。

避けるべきケース

  • Clerk:iOS/Android ネイティブアプリが主体のプロジェクトには SDK の厚みが不足することがある。REST API 経由での実装は可能だが、Auth0 のモバイル SDK と比べると薄い。
  • Supabase Auth:Supabase の DB や Storage を使わず Auth 単体だけを採用するのはオーバーヘッドが大きい。認証専用なら Clerk の方が素直に使える。
  • WorkOS:B2C のソーシャルログインが主体で大量 MAU を想定するプロジェクトには過剰設計になりやすい。料金体系もエンタープライズ前提のため、採用前に必ず公式料金ページで確認すること。

Top comments (0)