OAuth 概覽

OAuth(開放授權)是一種身分驗證協定,允許使用者向另一個網站或應用程式授予對其在一個網站或應用程式上的資源的有限存取權限,而無需分享其實際登入認證。

OAuth 就像一個值得信賴的中間人,使您能夠某項服務授予從另一項服務存取您資料的權限,而無需透露您的使用者名和密碼。本文件包括 OAuth 工作流程的技術說明與實際的 OAuth 類比。

OAuth 工作流程

OAuth 為使用者提供了一種安全且標準化的方式,讓使用者可以跨不同網站與應用程式授予存取其資料的權限,而無需共用其登入認證。它確保您可以控制哪些服務可以存取您的資料,並允許您隨時撤銷存取權限。

以下列表是 OAuth 工作原理的分步說明。

您(使用者)想要使用需要存取另一個網站或應用程式(以下稱「資源伺服器」)上的資料的網站或應用程式(以下稱「用戶端」)。

該用戶端請求從資源伺服器存取您的資料的權限。它通常通過將您重定向到資源伺服器的登入頁面來實現此目的。

您在資源伺服器的登入頁面中直接輸入登入認證。此步驟至關重要,因為您的使用者名和密碼永遠不會與客戶共用。

資源伺服器驗證您的認證並對您進行身分驗證。經過身分驗證後,它會為用戶端生成唯一的存取權杖。

資源伺服器將您重定向回用戶端應用程式,並提供存取權杖和重定向。

用戶端接收存取權杖,並在需要存取您的資料時將其傳送到資源伺服器。

資源伺服器檢查存取權杖的有效性。如果該權杖有效,它將授予用戶端在有限時間內存取所請求資源的權限。

用戶端可以使用授予的存取權限來檢索或修改資源伺服器上的資料,但僅限於存取權杖定義的範圍內。該範圍決定用戶端可以存取哪些操作和資料。

如果存取權杖過期或者用戶端需要額外的權限,用戶端可以通過再次執行身分驗證過程來請求新的存取權杖。

實用的 OAuth 類比

下面通過實際場景來類比 OAuth 的工作原理。

試想您要舉辦一個聚會,並且想僱用一名餐飲承辦商(客戶)來處理食物。但是,您不想將您家的鑰匙(您的登入認證)給餐飲服務商,因為這他們就可以存取您的所有個人物品。因此,您可以使用可信聚會組織者 (OAuth) 來管理存取。

您告訴聚會組織者您想僱用一家餐飲承辦商。聚會組織者知道如何處理進入您的房子和餐飲服務商的服務。

聚會組織者聯繫餐飲承辦商並派他們到您家開會。此時您不在家。

餐飲服務人員到達您家,但意識到未經您的許可(存取權杖)他們無法進入。他們打電話給您請求存取權限。

作為房主,您希望在授予存取權限之前驗證餐飲服務商的可信度。因此,您向餐飲服務商詢問一些問題以確認他們的身分(身分驗證)。

您對餐飲服務商的認證滿意後,就可以通過電話向他們提供臨時存取代碼(存取權杖)。此代碼允許他們進入您的房屋並準備食物,但僅限於其餐飲職責範圍內。

餐飲服務商使用存取代碼進入您的房子並開始準備食物。他們可以進入廚房和用餐區,但不得進入其他房間。

在指定時間後或聚會結束時,存取代碼就會過期,確保餐飲服務商在未經您許可的情況下無法重新進入您的房子。

在這種情況下,您(房主)是使用者,餐飲服務商是用戶端應用程式,您的房子代表您在資源伺服器上的個人資料,聚會組織者是 OAuth。

該存取代碼可充當存取權杖,允許客戶(餐飲服務商)有限地存取您的資源(房屋),而不會洩露您的登入認證(房屋鑰匙)。

OAuth 充當受信任的中介,促進服務之間資料的安全共享,同時保持對存取權限的控制。