接下來,我們要再深入了解OAuth,我相信大家都會有以下的問題:為什麼需要 OAuth?它解決什麼問題?誰參與其中?今天我們先搭建全局觀念的「地圖」,接下來幾天再逐步深入。
在早期的網路應用中,如果一個第三方應用想幫你操作 Google 或 Facebook 的資源,通常需要你直接把帳號密碼交給它。這樣做有幾個嚴重問題:
OAuth 解決的核心就是:讓使用者不用交出密碼,也能授權第三方有限度地存取資源。
OAuth 世界裡有四個角色:
角色 | 說明 | 範例 |
---|---|---|
Resource Owner | 資源擁有者(通常是使用者本人) | 你 |
Client | 想存取資源的應用程式(第三方 App) | 一個行事曆整合工具 |
Authorization Server | 負責驗證身分與發 Token 的伺服器 | Google Authorization Server |
Resource Server | 實際持有資源的伺服器 | Google Calendar API |
一張圖可以幫助理解:
OAuth 有幾個常見名詞,你會反覆遇到:
calendar.read
、email
。OAuth 提供了一些安全機制,避免流程被攻擊:
假設你開發了一個應用 MangaCloud,希望讓使用者可以用 Google 登入,並授權讀取他們的 Email:
openid email profile
。昨天教了一些關鍵字詞,今天則是教大家整理這些關鍵字,變成重要的四個觀念,以及OAuth所要達成的目標。那我們明天見囉!