OAuth 的運作方式——授權碼流程 · 心智圖
OAuth 的運作方式——授權碼流程. 可編輯嘅心智圖,以彩色分支、子題目同曲線連結呈現概念。 曲線表示關聯;只有方向重要時先用箭嘴。
OAuth 讓一個應用程式代表用戶存取另一個服務的資料,而全程都不會看到用戶的密碼——它用一次同意授權,換取一個有效期很短的權杖。
OAuth 的運作方式——授權碼流程 · 心智圖
The interactive MindMap canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.
點樣閱讀呢張心智圖
- 由中央主題開始,沿住彩色分支探索相關概念。
- 曲線表示關聯;只有方向重要時先用箭嘴。
User consent
呢個分支匯集 “User clicks “Sign in with provider””, “The consent screen is the step most real flows hide: the user chooses exactly which permissions the app may use, such as “read profile” but not “post”.”.
Redirect & code
呢個分支匯集 “The redirect carries the client id, the requested scopes and a redirect URI. The user never hands their password to the client application.”, “Authorization server returns an authorization code to the client”.
Token exchange
呢個分支匯集 “The code is short-lived and useless by itself. The exchange proves the client is who it claims to be by presenting its registered client secret.”, “Authorization server issues the access token”.
Resource access
呢個分支匯集 “Access tokens expire after a short window. Long-lived sessions use a separate refresh token that can mint new access tokens without asking the user again.”, “Resource server validates the token and returns the user's data”, “User sees their data inside the app”.
跨分支關聯
用戶的密碼只會交給授權伺服器——用戶端與資源伺服器從來看不到它。
同意授權(也就是那些授權範圍)才是真正的授予;存取權杖只是這個授予的機器可讀形式。
授權碼有效期很短,而且沒有 client secret 就毫無用處——兩個因素一起保護這次交換。
存取權杖會到期;更新權杖會靜靜換出新的權杖,不需要再出現一次同意授權畫面。
資源伺服器唯一的工作就是驗證權杖,而這正是各方得以保持解耦的原因。
Key relationships and takeaways
- 用戶的密碼只會交給授權伺服器——用戶端與資源伺服器從來看不到它。
- 同意授權(也就是那些授權範圍)才是真正的授予;存取權杖只是這個授予的機器可讀形式。
- 授權碼有效期很短,而且沒有 client secret 就毫無用處——兩個因素一起保護這次交換。
- 存取權杖會到期;更新權杖會靜靜換出新的權杖,不需要再出現一次同意授權畫面。
- 資源伺服器唯一的工作就是驗證權杖,而這正是各方得以保持解耦的原因。
When to use this visual
- 向產品團隊解釋為甚麼「使用 Google 帳戶登入」是安全的,以及同意授權畫面到底在問甚麼。
- 選擇一種 OAuth 流程:這裡的授權碼流程,相對於其他情境所用的隱含式流程或 client credentials 流程。
- 審視在你的整合裡,用戶憑據與權杖實際上會經過哪些地方。
運作方式
調整中央主題
按項目或課堂修改中央主題名稱。
擴展分支
編輯概念並加入例子或註解。
連結相關概念
畫出跨分支連結;只有方向重要時先用箭嘴。
常見問題
甚麼是 OAuth?它為甚麼存在?
OAuth 是一套委託標準。它讓一個應用程式代表用戶存取另一個服務上的資料,而應用程式全程都看不到用戶的密碼。用戶在授權伺服器驗證一次身分,並批准特定的權限(授權範圍);應用程式收到一個可以花用的權杖。這種職責分離,正是這張圖解裡四個群組所代表的東西。
授權碼與存取權杖有甚麼分別?
授權碼是用戶同意授權之後、用戶端收到的一個有效期很短的中間值;它本身不授予任何東西。用戶端要用這個授權碼——連同已註冊的 client secret——去換取存取權杖,而存取權杖才是真正用來呼叫資源伺服器的能力。這個兩步交換,正是用戶端可以在權杖端點證明自己身分的原因。
為甚麼用戶不把密碼交給應用程式?
因為應用程式只需要有限而且可以撤銷的存取權——讀取一份個人檔案,而不是擁有一個帳戶。如果應用程式拿到密碼,它就會永遠擁有全部存取權,而用戶亦無法在不到處更改密碼的情況下單獨撤銷其中一個應用程式。OAuth 用一個範圍受限、會到期、而且可以獨立撤銷的權杖,換走了密碼。
甚麼是授權範圍?
授權範圍是用戶批准的具體權限,例如讀取電郵或者寫入日曆。它們會出現在同意授權畫面上,並被編碼進存取權杖。資源伺服器負責執行這些範圍,所以一個只有讀取範圍的權杖無法寫入——最小權限是寫進協議裡的,而不是靠用戶端自律。
喺 QueryChart 編輯呢張心智圖
喺可編輯畫布開啟心智圖。移動概念、加入分支同畫連結。