結論(おすすめ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
# .env.local
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxx
CLERK_SECRET_KEY=sk_test_xxxx
Step 2: ミドルウェアの差し替え
Auth0 の withApiAuthRequired を Clerk の authMiddleware へ置き換える。
// middleware.ts
import { authMiddleware } from "@clerk/nextjs";
export default authMiddleware({
publicRoutes: ["/", "/api/public(.*)"],
});
export const config = {
matcher: ["/((?!_next|.*\\..*).*)"],
};
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"
}'
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 />;
}
カスタマイズは 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)