認證與授權 (AuthN & AuthZ)

★★★★Draft

FromDesigning Web APIs

📚 From the Books

認證與授權 (AuthN & AuthZ)ConceptSecurity Basics

安全的兩塊基石常被混談:認證(AuthN)=你是誰授權(AuthZ)=你能做什麼。API 對外開放時,用密碼直傳(Basic Auth)幾乎全錯,正解是 OAuth:不共享密碼、可選範圍、可撤銷。

🧠 Core Ideas

TIP

一句話分野:認證驗身分、授權驗權限。登入證明「你是 Alice」;授權決定「Alice 能不能編輯這頁」。兩件事,別混。

⚖️ Tradeoffs

OAuth 授權流程(授權碼換 token)
  • 前置:app 註冊拿 client ID(可公開)+ client secret(保密)+ redirect URL。
  • 三步:①app 導使用者到提供者(帶 client ID、scope、state)→ ②使用者同意、帶 authorization code 導回 → ③app 用 code + client secret 換 access token
  • API 伺服器每次驗兩件事:token 有效 + token 具備所需 scope
Scopes — 權限範圍怎麼切
  • scope 限制 app 能碰什麼,授權時明列給使用者看(如 Twitter 唯讀/讀寫/含私訊三層)。
  • 開頭就要想 scope 策略:太粗 → app 權限過大;太細 → 使用者/開發者困惑。
  • Slack 2015 從一個大 read 拆成 27 個細粒度 scope → app 只拿必要權限、使用者更願授權,安裝轉換率反而提升

🔑 Takeaways

✍️ My Notes

No notes yet — jot your takeaways or Q&A here.

📖 Further Reading