認証・認可の検証順序

認証・認可の検証順序 A sequence diagram generated by Archify. 保護pageへrequest getClaims() で検証 空でないsub Authorization: Bearer JWKS取得 公開key(最大10分cache) works_api_member_reader で問い合わせ 認可済みの行 401 / 403 / 503 を分けて返す 画面(tokenは渡さない) session検証 token検証 認可とresponse 利用者Browser · works-auth cookie · Sequence participant 利用者Browser works-auth cookie Next.js · server boundary · Sequence participant Next.js server boundary Supabase Auth · JWKS · Sequence participant Supabase Auth JWKS Rust API · 認可 · Sequence participant Rust API 認可 PostgreSQL · private schema · Sequence participant PostgreSQL private schema Legend request return security default message

Next.js側で確かめること

  • • Suspense boundaryより前に空でないsubを確認する
  • • 未検証のgetSession()を認可判断に使わない
  • • tokenはRust APIのheaderへだけ渡す

Rust側で確かめること

  • • algorithmはES256とRS256だけを受ける
  • • HS256とnoneはJWKS取得前に拒否する
  • • iss・aud・exp・sub・role・is_anonymousを検証する

失敗の分け方

  • • invalid tokenはUnauthenticated
  • • inactiveまたは未対応accountはForbidden
  • • JWKS取得不能とdatabase失敗はUnavailable