Open6

Auth0 x Next.js x Client Authenticationを考える

yoshiki-0428yoshiki-0428

1 の方法は従来のReact通り <Auth0Provider をRootに定義して行けばいい。

https://auth0.com/docs/quickstart/spa/react/01-login

この方法のメリット

  • SSRというコストが少ない
  • Serverless APIを構築しなくて良い
  • Frontだけで認証が完結する
  • ページ遷移を必要としないAPI呼び出し(いいねとか)での実装に対応できる
yoshiki-0428yoshiki-0428

2 の方法はNext.js API Rootに /api/login /api/logout /api/callback などを用意する必要がある。

この方法のメリット

  • Next.js APIを使用したAPIを前提で組んでいるのであれば有効?
  • SSRのページが多いときに有効
  • 同一ドメイン内でセッションを回すためセキュアなのかな?
yoshiki-0428yoshiki-0428

多分自分であれば 1 を選ぶ。

なぜならNext.js APIを構築する = 別でAPIサーバを用意しないことが前提だから。実際、Next.js APIでDB Connectionの問題はPrismaでも解決していないし、別でAPIサーバを用意してNext.js内でAPIを組んでという手間が凄まじい。

yoshiki-0428yoshiki-0428

最近Proxyかまして認証すればよいのでは?ってなっている

つまり、Front => vercel.com/api/proxy/users/ => api.com/api/users/ で自ドメイン経由してるから認証情報はそこでつければ特にFront側でトークンをごちゃごちゃしなくて良さそう

yoshiki-0428yoshiki-0428

そういえば最近next-authが熱くなってきたのでシンプルにこちらで良いのかも