中級還沒有評分

認證與授權:從密碼到 OAuth

從密碼雜湊、Session、JWT 學到權限設計、OAuth、OIDC 與 Passkeys,用豪享小舖的會員登入、管理後台與第三方登入貫穿全課,每種攻擊都在自己的練習環境親手重現,準備好面試會追問的原理與資安細節。

10 章・53 單元・約 12 小時 30 分鐘

課程介紹

這門課從「認證、授權、稽核」三件事的分界開始,一路學到密碼怎麼存、暴力破解與撞庫怎麼擋、Session 登入與 Redis、Session 固定與 CSRF、JWT 的結構與驗證、會被怎麼偽造、Access Token 與 Refresh Token 的續期與撤銷、RBAC 與水平越權、OAuth 授權碼流程與 PKCE、OIDC 與單一登入、手機 App 與微服務之間的認證,最後是多因素認證與 Passkeys。 全課用同一個情境:「豪享小舖」有會員登入、店家的管理後台、「用豪享帳號登入」,後來還有手機 App 與給物流商的 API。小舖用 Flask 寫,Session、JWT、OAuth 的流程都自己寫、不靠現成的登入套件,每一步是誰發的、誰驗的都看得到;Session 固定、CSRF、偽造 JWT、破解外洩的密碼表、竄改 redirect_uri 偷授權碼,都在自己電腦的練習環境親手重現一次,再把它修好。每段指令後面就是實際執行的結果,讀課文就看得懂;想動手的話,第一章會教你用 Docker 在自己電腦架起這間店。 中文面試題整理裡常見、但其實是錯的答案,例如「MD5 加鹽就安全」「JWT 放 localStorage 沒問題」「OAuth 就是登入」,遇到會直接講清楚錯在哪、現在怎麼做。每個單元還有「面試這樣答」,把觀念整理成面試時可以直接講的回答,並預想面試官會怎麼追問。

用哪個版本

原理先教、不以版本為主軸:雜湊與加鹽、Session、簽章、角色與權限、授權碼流程、PKCE、ID Token,這些十幾年來原理沒變,面試問的也是這些;正確性以 OWASP Cheat Sheets、OAuth 與 JWT 的 RFC、OpenID Connect 規格、NIST SP 800-63B 為準。課文的指令與結果在 Docker 上實際跑過:Python 3.12.16 加上 Flask 3.1、PyJWT 2.15、cryptography 50、argon2-cffi 25.1、bcrypt 5.0,Redis 8.10.2、nginx 1.30.6,以及扮演第三方登入的 Keycloak 26.8.1。OAuth 2.1 拿掉 implicit 與密碼授權、瀏覽器的 SameSite 與第三方 Cookie、密碼規則改成「要夠長、外洩才換」、Passkeys 這些近年的演進,集中在第 10 章一次講清楚。

你會學到

  • 分清楚認證、授權與稽核,講得出 401 與 403 的分界,以及登入系統會從哪些地方被攻擊
  • 說明密碼為什麼要用加鹽的慢雜湊(Argon2id、bcrypt)、怎麼擋暴力破解與撞庫,設計安全的忘記密碼流程
  • 比較 Session 與 JWT,說清楚 JWT 要驗哪些欄位、怎麼被偽造、怎麼登出與踢人,以及雙 Token 續期與 Refresh Token 輪替
  • 防住 Session 固定、CSRF、水平越權,設計 RBAC 資料表並決定權限該在哪一層檢查
  • 講清楚 OAuth 授權碼流程、PKCE、state 與 redirect_uri 各防什麼,OIDC 的 ID Token 與 Access Token 差在哪,單一登入怎麼做
  • 為手機 App、API 與微服務之間選對認證方式,並說得出多因素認證、Passkeys 與 OAuth 2.1 改變了什麼

學習地圖

    1. 1-1課程導覽學認證與授權要從哪裡開始?13 分
    2. 1-2準備練習環境怎麼在自己電腦架一個有登入、有後台、有第三方登入的小網站?18 分
    3. 1-3認證、授權與稽核登入成功了,為什麼還是不能進後台?11 分
    4. 1-4登入系統會怎麼被攻擊一個登入表單,會從哪些地方被攻破?10 分
    5. 1-5實作:看一次登入的往返按下登入之後,瀏覽器和伺服器之間來回了幾趟?13 分

期末考

通過期末考,才算讀完整門課。

題數
30 題
及格分數
80 分
限時
不限時
沒過後要等
24 小時