Closed11
@auth0/nextjs-auth0 v4 マイグレーションガイドのメモ

v3からv4へのマイグレーションガイド

# 必須のenv
AUTH0_DOMAIN # AUTH0_ISSUER_BASE_URLからリネームされた値。スキーム含まない形のみ許容に。
AUTH0_CLIENT_ID
AUTH0_CLIENT_SECRET
AUTH0_SECRET
APP_BASE_URL # AUTH0_BASE_URLからリネームされた値。

- app routerの場合、v3では
/app/api/auth/[auth0]/route.ts
にhandleAuth
でRoute Handlerを追加する必要があった - v4では、middlewareでrouteが自動的にマウントされる
import type { NextRequest } from "next/server"
import { auth0 } from "./lib/auth0"
export async function middleware(request: NextRequest) {
return await auth0.middleware(request)
}
- SDK公式のexample
-
/api
のプレフィックスも不要になった- 例えば、
/api/auth/login
は/auth/login
に
- 例えば、
- routeのリスト
-
Allowed Callback URLs
の修正が適宜必要になる

- v4ではミドルウェアのマウントが必須
- ミドルウェアがSDKの中心的な役割

- デフォルトで保護するルートはない
- 保護するルートに対してはmiddlewareで
getSession
を呼ぶ - データソースのなるべく近くでセキュリティチェックが望ましい

-
<UserProvider />
は<Auth0Provider />
にリネームされた - v4ではこのプロバイダーの利用が必須ではない

v4ではローリングセッションが設定不要でデフォルト有効

-
withPageAuthRequired
やwithApiAuthRequired
は廃止 - サーバーサイドなら
getSession
で認証状態チェック入れる - ブラウザなら
useUser
hookで代替

- v3におけるカスタムハンドラーの
authorizationParams
は、v4でエンドポイントのURLにクエリーパラメーターでつけられるように/auth/login?audience=urn:my-api
- SDK初期化の設定に入れる方法もある

- v3までid tokenに含まれるclaimsは全てセッションの
user
オブジェクトへと追加されてた- cookieのサイズ肥大化に影響してた
- v4からはデフォルトで特定のclaimsのみに限定される

-
@auth0/nextjs-auth0/edge
のexport
はなくなった- デフォルトでedge互換
- SDKが保存するcookieは
SameSite=Lax
がデフォルト -
touchSession
メソッドは廃止 -
getAccessToken
をReact Server Componentsで呼べるように
このスクラップは2ヶ月前にクローズされました