「筆記」- 何謂 OAuth?Google 實例說明 OAuth 處理流程

Pierce Shih
皮爾斯的自學旅程
4 min readMay 19, 2019

程式海無涯,聽說永遠學不完,那我只好一點一點把它們寫下來囉!

對於任何軟體產品來說,我們不僅提供產品本身的功能,更要提供每位使用者能夠擁有個人帳號的認證系統,方便使用者自行管理專屬自己的資料內容,如此一來,才能讓他們長期使用產品,創造永續的激活用戶。

而打造一個使用者認證系統,不僅需要一個明確的使用者故事,更需要瞭解 OAuth 與 Session / Cookie …等內容,而本週我們將把【使用者認證系統】分成三篇文章進行分享,分別是:

・淺談使用者認證系統

・Session & Cookie 如何實踐使用者認證

・何謂 OAuth?Google 實例說明 OAuth 處理流程(本篇分享)

圖片引用來源:Unsplash

何謂 OAuth

OAuth 是一個網路開發的標準,用來處理跨平台身份授權的行為,實務上,不僅能夠透過使用者的授權來存取大型平台之間的使用者個人資料。

更重要的是,若一個服務能夠提供跨平台的帳號登入服務,也有助於提升使用者體驗,讓其專注在產品本身的服務當中,避免被繁瑣的註冊與登入問題所影響。

延伸閱讀:OAuth官方文件

OAuth 授權處理流程

Internet Engineering Task Force (IETF) 官方文件中,針對 OAuth 2.0 的處理流程,有清楚的描述與介紹,我們可以藉由官方的圖檔來詳細說明。

IETF OAuth 2.0 圖解授權流程

OAuth 授權處理流程,大致可以區分成不同角色,每一個角色都有負責的工作內容,進而串起整個 OAuth 授權的運作。

接下來,讓我們以 Google 為範例來介紹,大致可分為六個步驟。

Step 1:授權請求

使用者(客戶端 Client)點擊第三方應用程式「 以 Google 登入 」,此時,該應用程式就會向使用者(即資源擁有者 Resource owner )索取資料使用的授權請求。

Step 2:授權許可

使用者(客戶端 Client)會收到一個授權請求,若他點擊同意授權,該應用程式則會收到一個授權許可,這好比使用者的分身,代表他願意讓應用程式代為向 Google 的授權伺服器 (Authorization server) 進行溝通。

Step 3:Access Token 請求

由於已得到使用者本人的授權許可,因此,該應用程式會憑藉授權許可,主動向 Google 的授權伺服器發送 Access Token 請求,接著 Google 會進行資料比對,如 用戶端 ID、用戶端 密碼,確認應用程式的合法性。

Step 4:Access Token 簽發

Google 的授權伺服器,若資料成功比對後,則會發給該應用程式一個 Access Token,讓它接下來能夠透過這個 Access Token 向 Google 資源伺服器 (Resource Server)索取所需要的資料。

Step 5:資料索取

此時,該應用程式,不僅透過 Access Token 認證身份,同時,也會向 Google 資源伺服器提出資料的請求。

Step 6:資料回傳

最後,Google 資源伺服器會驗證 Access Token,若確認無誤,則會將使用者被保護的資料授權給該應用程式來使用,進而完成透過 Google 完成第三方登入應用程式的功能。

圖片引用來源:Unsplash

結語

透過本週以【使用者認證系統】為主軸的學習分享,相信縱使你是第一次實作的人,也都對於打造一個具有認證系統的產品有了初步的概念,這也是我本週分享的初心。

期待每一位期望透過技術和產品為世界帶來改變的人,最終都能創造出你自己的產品,實踐屬於心中的理念與夢想,造福你我週遭的使用者。

謝謝你的閱讀!如果有任何想法,也歡迎留言與我分享~如果願意給我一些小小鼓勵,請給我 1–20 個拍手;
如果覺得文章對你有點幫助,請給我 21-30 個拍手;
如果非常喜歡我的技術筆記,請長按拍手按鈕(50個拍好拍滿)讓我知道哦 👏🏻最後,若希望持續追蹤我的最新文章,別忘了追蹤 皮爾斯的自學旅程 唷,乾溫 :D

--

--

Pierce Shih
皮爾斯的自學旅程

Leading business growth with product mindset and technical perspective