認証・認可サービスの Clerk の設定手順

要約
認証・認可サービスの Clerk(クラーク)を使えば OAuth 認証を5分で実装できます。取り急ぎ、公式 docs に沿った設定手順をメモしておきます。
意見はこのエリアに表示されます
アイキャッチ画像

特徴

ざっくりと、Clerk(クラーク)の特徴をまとめておきます。

  • GCP や callback uri の設定不要
  • 認証用 UI コンポーネント提供
  • 二段階認証 OK
  • MAU 10,000 人まで無料
  • クレジットカード登録不要
  • PRO $25
  • Next.js, React、Remix, Expo 対応。

実装環境は Next.js 15ですが、5分くらいで実装できました。UIも提供されているので開発が楽で早いです。小規模SaaSならこれでいいのでは?PROにすれば Clerk のロゴを外せます。

認証・認可サービス比較表

他の競合サービスと比較してみました。比較対象はこちら。

  • Supabase Auth
  • Better Auth
  • Clerk
  • Auth0

izanami では、コンテンツ量が多い表は横にスクロールできます。

項目Supabase AuthBetter AuthClerkAuth0
提供元SupabaseVercelClerk Inc.Okta(旧Auth0)
特徴FirebaseライクなBaaS認証Next.js App Router向けに最適化UI付き認証機能が豊富エンタープライズ向け高機能
対応プロバイダーEmail, OAuth (Google, GitHub等)Email, OAuth, PasskeyEmail, OAuth, Passkey, SMS, Web3Email, OAuth, SMSなど多数
セッション管理サーバー/クライアント両対応App RouterとServer Action最適化完全マネージド高度な設定が可能(やや複雑)
UI コンポーネント無し(自作)無し(Next.jsと親和性高い)豊富(Drop-in UIあり)有料プランで提供
Next.js との親和性高い(ただし若干古い実装あり)フレームワーク非依存高い(公式でサポート)中程度(App Routerは別途対応必要)
Supabaseとの統合完全統合(Auth, DB, Storage)×(独立)×(独立)×(独立)
オープンソース一部OSS(クライアント/サーバー)OSS×(プロプライエタリ)×(プロプライエタリ)
RLS(行レベルセキュリティ)対応あり(DB連携で強力)×××
商用利用の価格帯無料枠あり・月額課金制無料無料枠あり(10,000 MAU)PRO $25無料枠あり・エンタープライズ向け高額
特徴的な機能DBとの統合が強力、RLS、JWTApp Router & Server Actionに特化多言語対応UI、ユーザーダッシュボード多要素認証、エンタープライズ統合
セキュリティRLS連携が前提で堅牢Next.jsのServer Action設計に依存高水準、GDPR/CCPA対応業界最高レベルのセキュリティ
使いやすさ自作が必要(やや玄人向け)シンプルで実装早いUI込みですぐ使える高機能だが設定が煩雑

アカウント作成

アカウント作成はこちら。GitHub、Google、メールで作成できます。

GitHubで作成します
GitHubで作成します
Authorize clerk を押して接続
Authorize clerk を押して接続
Application name を入力し、サインインオプション選択
Application name を入力し、サインインオプション選択
後はこれを入力していくだけ
後はこれを入力していくだけ

実装完了です。画面にログイン・ログアウトが表示されるので、ログインを押すと、画面遷移します。

ログイン完了。ログアウトも簡単にできる
ログイン完了。ログアウトも簡単にできる

ここまで5分です。管理画面でログイン者を管理できます。

ダッシュボード
ダッシュボード

次に、コード記述です。公式の通り。

@clerk/nextjs インストール

次のコマンドを実行しSDK をインストール。

.env 設定

これらのキーを .env ファイルに追加するか、ファイルが存在しない場合は作成してください。これらのキーは API キーページからいつでも取得できます。

middleware.ts

laytout.tsx

next.config.js

全て設定したら npm run dev GO!!!!

エラー

middleware.ts の位置を間違えると以下のエラーが出ます。

これはClerkのミドルウェアファイルの配置場所に関する問題です。middleware.tsがプロジェクトのルートディレクトリにありますが、Next.jsのApp Routerではsrcディレクトリ内に配置する必要があります。

Explore More
関連記事はありません。