B10 · 認證與授權 詳細 ROADMAP

計畫文件,不會被 Quartz 渲染。 回主 roadmap → backend/ROADMAP.md


章節目標

認證(Authentication)跟授權(Authorization)是後端最容易出安全事故的領域。本章涵蓋 Session / JWT / OAuth / OIDC / SSO,以及權限模型(RBAC / ABAC / ReBAC)、密碼雜湊、token 生命週期管理。Proto 有完整 JWT RS256 實作 + 事件驅動 token 撤銷系統,本章會大量引用。


🌱 基本介紹

#主題SlugStage大綱
01認證 vs 授權的差別01-authn-vs-authz🌱「你是誰」vs「你能做什麼」;AuthN / AuthZ 分工

❓ 為什麼需要

#主題SlugStage大綱
02為什麼 Session / JWT / Cookie 搞混會出事02-why-auth-confusion-causes-issues🌱Session store 跨 instance 遺失、JWT 不能撤銷的坑、Cookie 屬性錯誤(SameSite / Secure)
03為什麼自己寫 auth 是地雷03-why-not-roll-your-own-auth🌱密碼存 MD5、timing attack、JWT 演算法 header 信任(alg: none)、token 撤銷失敗
04為什麼 RBAC 不夠用常要 ABAC / ReBAC04-why-rbac-not-enough🌱資源層級權限、「只能看自己的訂單」RBAC 搞不定;Google Zanzibar(ReBAC)

🕰️ 演進

#主題SlugStage大綱
05認證機制演進05-auth-evolution🌱Basic Auth → Session Cookie → OAuth 1.0 → OAuth 2.0 → OIDC → Passkey(WebAuthn)
06權限模型演進06-authz-model-evolution🌱ACL → RBAC(2000s)→ ABAC(2010s)→ ReBAC(Zanzibar 2019+)

🧠 知識型

F10-A 認證機制

#主題SlugStage大綱
07Session vs JWT vs Cookie07-session-jwt-cookie🌱三種機制的定位、各自適用場景、混用模式
08JWT 深入08-jwt-deep🌱JWS / JWE / JWK、header / payload / signature、常見坑(none algorithm、audience 沒驗)
09JWT 非對稱簽名(RS256 / ES256)09-jwt-asymmetric🌱Public / Private key 分工、微服務場景、proto 實作 ⛔️ 見 B07 #11
10OAuth 2.0 / OIDC⛔️ fundamentals/oauth-guide🌿跨系列
11Passkey / WebAuthn11-passkey-webauthn🌱無密碼登入、後端驗證流程、前後端分工
12SSO 整合12-sso-integration🌱SAML vs OIDC;企業常見選擇;IdP 整合(Okta / Auth0 / Keycloak)

F10-B 密碼與機密

#主題SlugStage大綱
13bcrypt 瓶頸⛔️ micro-service/06-bcrypt-bottleneck🌿跨系列
14bcrypt 各語言實作⛔️ micro-service/07-bcrypt-implementations🌿跨系列
15bcrypt vs argon2⛔️ micro-service/08-bcrypt-vs-argon2🌿跨系列
16密碼儲存最佳實踐16-password-storage-best-practice🌱cost factor 怎麼調、pepper、migration 升級策略(多 hash 共存)

F10-C 授權模型

#主題SlugStage大綱
17RBAC 深入17-rbac-deep🌱Role / Permission / User 資料模型、hierarchy、用 proto 實作(見 B07)
18ABAC 深入18-abac-deep🌱Attribute-based、Policy engine(OPA)、靈活但難 debug
19ReBAC / Zanzibar19-rebac-zanzibar🌱Relation-based;Google Drive / GitHub 權限模型;SpiceDB / Warrant OSS 實作
20Policy as Code(OPA)20-opa🌱Open Policy Agent、Rego language、跟 K8s / API Gateway 整合

F10-D Token 生命週期

#主題SlugStage大綱
21Access Token / Refresh Token21-access-refresh-token🌱短期 access(15 分鐘)+ 長期 refresh(7 天)、rotation、family tracking
22Token 撤銷 / Blacklist22-token-revocation🌱JWT 不能撤銷的迷思、短期 + blacklist / introspection / revocation list;proto 實作事件驅動撤銷
23Token 儲存位置的 trade-off23-token-storage🌱localStorage / sessionStorage / cookie / memory;XSS / CSRF / refresh 的三方拉扯

F10-E 微服務認證架構

#主題SlugStage大綱
23-2Service-to-Service Auth 選型23-2-service-to-service-auth🌱mTLS(最安全但複雜)vs Internal JWT(簡單但要 key 管理)vs API Key(legacy 相容);三選一決策
23-3User Context Propagation23-3-user-context-propagation🌱使用者身份如何沿 service chain 傳遞;跟 trace context 分工;中間 service 如何重新驗證
23-4Zero-Trust Network 原則23-4-zero-trust🌱不信任 network boundary;每個 request 都要驗證;實務上怎麼漸進採用
23-5Token Exchange / Downscoping23-5-token-exchange🌱RFC 8693;external token → internal scoped token;敏感 operation 降權限;STS 模式
23-6Gateway → Internal Token 轉換23-6-gateway-internal-token🌱Kong / Envoy / APISIX 驗 user token → 轉 internal short-lived token;簡化 internal service auth

🔧 小實作注意事項

#主題SlugStage大綱
24從零實作 JWT auth(proto 對照)24-jwt-auth-from-scratch🌱FastAPI + RS256、issuer / audience 驗證、token blacklist 整合
25RBAC 實作(proto 對照)25-rbac-impl🌱Role / Permission model、middleware、decorator 保護 endpoint
26Event-driven Token 撤銷26-event-driven-token-revocation🌱user.deleted event → auth-service 撤銷所有 token;proto 案例

💣 Anti-pattern

#主題SlugStage大綱
27認證授權 Anti-patterns27-auth-antipatterns🌱密碼存 MD5 / SHA1、JWT 塞敏感資料(沒加密)、JWT expiration 設 30 天、忘了 audience / issuer 驗證、把 role 檢查寫在 Controller(應該在 decorator / middleware)、權限表用 CSV、admin 權限一鍵全通

🧰 對應檢查工具

#主題SlugStage大綱
28Auth 相關工具28-auth-tooling🌱jwt.io、Keycloak / Auth0 / Ory Hydra(IdP)、SpiceDB / OpenFGA(ReBAC)、OPA(policy)

📎 補充

#主題SlugStage大綱
S01多租戶(Multi-tenant)Auth 設計s01-multi-tenant-auth🌱tenant isolation、權限繼承、跨租戶存取
S02MFA / TOTP / WebAuthn 整合s02-mfa-integration🌱backup codes、SMS vs authenticator、硬體 key

章節進度統計

  • 知識主題:28 + 2 補充 = 30 項
  • 🌿 growing:4(跨系列)
  • 🌱 seed:26

跨系列連結

  • fundamentals/oauth-guide
  • micro-service/06–08(bcrypt 系列)
  • backend/conventions/ B07 #11 #17–19 #25(proto auth / middleware)
  • backend/security/ B16(注入攻擊跟 auth 的關係)
  • security/03-web-security