認証・認可のtrust boundary

認証・認可のtrust boundary An architecture diagram generated by Archify. 利用者Browser · works-auth cookie / HttpOnly · Architecture component 利用者Browser works-auth cookie / HttpOnly Next.js server boundary · Vercel / 薄いBFF · server-sideだけがcredentialを保持する · apps/web Next.js server boundary Vercel / 薄いBFF apps/web Rust API · Render / 認可と業務規則 · server-sideだけがcredentialを保持する · apps/api Rust API Render / 認可と業務規則 apps/api Supabase Auth · JWKS / ES256・RS256のみ · Supabase project Supabase Auth JWKS / ES256・RS256のみ PostgreSQL · private schema / default deny · Supabase project PostgreSQL private schema / default deny Supabase Storage · private bucket · Supabase project Supabase Storage private bucket HTTPS / 同一originのみ Authorization: Bearer login POST / getClaims() JWKS取得 / 最大10分cache works_api_member_reader 利用者JWT転送 / RLS再評価 server-sideだけがcredentialを保持する Supabase project Legend Frontend Backend Database Cloud Security External

Browserへ渡さないもの

  • • Supabase access token(Rust APIへのheaderにだけ載せる)
  • • server用Supabase secret keyとruntime database URL
  • • Storageのobject keyと署名URL
  • • member / organization / position のUUID

各境界での検証

  • • Next.jsはgetClaims()でsub確認後にだけtokenを取り出す
  • • RustはJWKSでES256・RS256のみ検証しHS256を拒否する
  • • PostgreSQLはprivate schemaとdefault denyのRLSで閉じる
  • • 写真readはStorage RLSでも同じ認可を再評価する

禁止されている経路

  • • browserからRust APIを直接呼ぶこと
  • • browserからSupabase Data APIでbusiness dataを読むこと
  • • anon / authenticated / service_role へのprivate schema付与