markdown-it
demo
Delete
Submit
clear
permalink
OAuth 2.0 是一個業界標準的 **授權框架(authorization framework)**,用來讓應用程式安全地、有限地存取使用者在其他平台上的資源(像 Google、Facebook、GitHub 上的資料),而**不需要把密碼交給應用程式**。 --- ## 🔑 OAuth 2.0 是做什麼的? > 👥「使用者」允許「應用程式」存取「第三方服務」上的資料,而不需給密碼。 --- ## 🎯 核心概念 | 名稱 | 說明 | | ------------------------ | -------------------------------------------- | | **Resource Owner** | 擁有資源的人,通常是「使用者」 | | **Client** | 想要存取資源的應用程式(例如你的網站或手機 App) | | **Authorization Server** | 驗證身份與發 token 的伺服器(例如 Google、GitHub) | | **Resource Server** | 存放資源的伺服器(通常跟上面是同一個,例如 Google 的 userinfo API) | | **Access Token** | 一組短期密鑰,Client 拿這個去存取資源 | --- ## 🔁 OAuth 2.0 授權流程(最常見:Authorization Code Flow) ### 📌 範例場景: 你做了一個網站,希望使用者能用 Google 登入並讀取他們的 email。 ### 🔄 流程圖: ``` [User] → 點擊登入 → Redirect 到 Google Login ↓ [Google] → 使用者登入並同意授權 ↓ [Google] → Redirect 回你的網站(附上授權碼) ↓ [你的網站] → 用授權碼換取 access token(向 Google) ↓ [你的網站] → 用 token 去取使用者 email/profile 等 ``` --- ## 🔐 Token 說明 | Token 類型 | 用途 | 壽命 | | ----------------- | ----------------------- | ---------- | | **Access Token** | 用來存取 API,像是取得使用者資料 | 短(幾分鐘~幾小時) | | **Refresh Token** | 用來取得新的 Access Token(可選) | 長(幾天~幾週) | --- ## ✅ OAuth 2.0 的好處 * 不用暴露密碼給第三方應用 * 可細分權限(scope) * 可撤銷授權 * 支援多種裝置(Web、Mobile) --- ## 🔧 常見流程類型(Grant Types) | 類型 | 用途 | 適合場景 | | ----------------------- | ----------------------- | --------------- | | Authorization Code Flow | 最常用,安全,支援 Refresh Token | Web 後端應用 | | PKCE(加強版) | 無需 secret,支援 SPA 安全授權 | 單頁前端應用(React 等) | | Client Credentials Flow | 應用對應用授權(無使用者) | 後端系統整合、自動腳本 | | Implicit Flow(已淘汰) | 舊的前端用法,已不建議使用 | ❌ 不建議 | --- ## 📘 實際應用範例 | 應用 | 使用 OAuth 來做什麼? | | -------- | --------------------------------- | | 登入(社群登入) | 用 Google/Facebook/GitHub 登入 | | 存取 API | 第三方應用存取 Google Calendar、Dropbox 等 | | 系統間授權 | 應用 A 與 B 授權共享資料(B2B 應用) | --- ## ❗️OAuth ≠ 身分驗證(Authentication) OAuth 是「授權」(Authorization):我允許你存取資料 🔑 **要登入用戶身份,需結合 OpenID Connect(OIDC)**
html
source
debug
Fork me on GitHub