🙆

clerkで提供されるauthMiddlewareとclerkMiddlewareの違い

2024/05/03に公開

Clerk での authMiddlewareclerkMiddleware の違い

Clerk で提供される authMiddlewareclerkMiddleware は、どちらも 認証機能 を実装するためのミドルウェアですが、以下の点で重要な違いがあります。

1. 認証フロー

機能 authMiddleware clerkMiddleware
認証フロー OAuth 2.0 JSON Web Tokens (JWT)
アクセストークン Authorization ヘッダー Cookie
ユーザーデータ req.clerk オブジェクト req.clerk.user オブジェクト

authMiddlewareOAuth 2.0 プロトコルに基づいており、Authorization ヘッダー に含まれる アクセストークン を検証することで認証を行います。一方、clerkMiddlewareJSON Web Tokens (JWT) を使用しており、Cookie に保存された JWT を検証することで認証を行います。

2. ユーザーデータ

認証が成功すると、それぞれのミドルウェアは ユーザーデータ をリクエストオブジェクトに格納します。

  • authMiddleware: ユーザー情報は req.clerk オブジェクトに格納されます。
  • clerkMiddleware: ユーザー情報は req.clerk.user オブジェクトに格納されます。

clerkMiddleware の方が、ユーザー情報へのアクセスがより簡潔になっています。

3. ユースケース

authMiddleware は、以下のユースケースに適しています。

  • OAuth 2.0 プロバイダ (Google、Facebook、Twitter など) を利用して認証を行う場合
  • アクセストークン を直接操作する必要がある場合

clerkMiddleware は、以下のユースケースに適しています。

  • シンプルで使いやすい 認証フローが必要な場合
  • Cookie を使って認証を行う場合
  • ユーザー情報 に簡単にアクセスしたい場合

4. まとめ

ミドルウェア 認証フロー アクセストークン ユーザーデータ ユースケース
authMiddleware OAuth 2.0 Authorization ヘッダー req.clerk OAuth 2.0 プロバイダ利用、アクセストークン操作
clerkMiddleware JWT Cookie req.clerk.user シンプルな認証フロー、Cookie利用、ユーザー情報アクセス

どちらのミドルウェアを選択するかは、プロジェクトの要件によって異なります。 上記の表を参考に、ご自身のプロジェクトに合ったミドルウェアを選択してください。

その他

  • authMiddlewareclerkMiddleware は、Next.jsExpress などのフレームワークで使用することができます。
  • Clerk の詳細については、公式ドキュメントを参照してください: https://clerk.com/

Discussion