[授權] OAuth2.0
OAuth 是一個開發標準(Open Standard),用來處理有關「授權」(Authorization)相關的問題 允許授權當下的APP取得使用者在平台的相關資訊 OAuth2 有很多變化
腳色:
- Resource Owner,也就是使用者。
- Client,要向使用者取得權限的應用程式,有自己的 Client ID、 Client Secret。
- Authorization Server,負責驗證使用者身分、發 Access Token 給應用程式
- Resource Server,存放資源的伺服器,認 Token 給使用者存取資源
用詞
- Authorization Grant 同意應用程式取得資源
- Redirect URI 驗證伺服器驗證、授權完畢後,返回應用程式的路徑
- Scope 授權範圍
OAuth2.0 四種授權類型流程(Grant Types):
Authorization Code
最常見,步驟:
- 應用程式(Client) 將使用者導向 Authorization Server,提供 Redirect URL, scope, 應用程式的 client id…
- Authorization Server 驗證使用者身分,通過之後發給 Authorization Grant,將網址列帶上 Authorization Grant 後將使用者導回 Redirect URI 回到應用程式(Client)。
- 應用程式(Client)拿 Authorization Grant 和 Authorization Server 換取 Access Token,Authorization Server 會透過應用程式(Client)專屬的 Client ID、 Client Secret 驗證應用程式身分。
- 應用程式(Client)帶著 Access Token 向 Resource Server 存取資源
Implicit
適合在 Client-side 運行的應用程式適合使用,例如 SPA(Single Page Application) 跳過交換 Access Token 的過程,由 Authorization Server 直接給予 Access Token 比較不安全
Resource Owner Password Credentials
使用者透過應用程式(Client),提供帳號密碼給 Authorization Server拿到 Access Token
Client Credentials
M2M (machine-to-machine) 通常是應用程式向 Authorization Server 請求取得獲取自己相關資源的 Access Token,而不是為了獲取使用者的資源。 不需要驗證使用者身分,單純應用程式向 Authorization Server 驗證自己的資訊。