驗證和授權是分別用於驗證身分和資源的機制。本文件說明在應用程式中實作驗證和授權前,您應瞭解的重要詞彙。
「驗證」可識別發出要求的使用者。「Authorization」可識別要求者可存取的資源,以及他們擁有的存取層級。驗證是授權的先決條件。您必須先建立要求者的身分,才能判斷要存取哪些資源。如需更詳細的定義,請參閱重要術語一節。
以下提供訂房的簡單範例。抵達飯店時,服務台專員會要求您的 ID 以驗證您的預訂。你的身分證件會驗證給飯店。櫃台專員會提供飯店鑰匙。您可使用此鑰匙存取飯店的特定資源,例如您的飯店房間、健身房和商務中心。飯店金鑰會授權您存取這些資源。
流程總覽
下圖說明 Google Workspace API 適用的驗證與授權詳細步驟:
![驗證與授權實作的整體步驟](https://developers-dot-devsite-v2-prod.appspot.com/workspace/images/auth-overview.png?authuser=7&hl=zh-tw)
設定 Google Cloud 專案和應用程式:在開發過程中,您會在 Google Cloud 控制台中註冊應用程式,並定義授權範圍和登入憑證,以便使用 API 金鑰、使用者憑證或服務帳戶憑證來驗證應用程式。
驗證應用程式以存取:當應用程式執行時,系統會評估已註冊的存取憑證。如果您的應用程式是以使用者身分進行驗證,系統可能會顯示登入提示。
要求資源:當應用程式需要存取 Google 資源時,應用程式會要求 Google 使用您先前註冊的相關存取權範圍。
要求使用者同意:如果您的應用程式是以使用者身分進行驗證,Google 會顯示 OAuth 同意畫面,讓使用者決定是否要將要求的資料存取權授予應用程式。
傳送已核准的資源要求:如果使用者同意存取範圍,則應用程式會將憑證和使用者核准的存取權範圍組合為要求。系統會將要求傳送至 Google 授權伺服器,以取得存取權杖。
Google 傳回存取權杖:存取權杖包含已授予存取權範圍的清單。如果傳回的範圍清單超出要求的存取權範圍,應用程式會停用權杖限制的所有功能。
存取要求的資源:應用程式會使用 Google 的存取權杖叫用相關的 API 及存取資源。
取得更新權杖 (選用):如果應用程式需要存取單一存取權杖生命週期以外的 Google API,便可取得更新權杖。
要求更多資源:如果應用程式需要額外存取權,應用程式會要求使用者授予新的存取權範圍,產生新的要求以取得存取權杖 (步驟 3 至 6)。
重要術語
以下是驗證和授權相關詞彙的清單:
- 身分驗證
確保「主體」 (可以是使用者,或代表使用者的應用程式) 辨別出使用者的真實身分。編寫 Google Workspace 應用程式時,您應瞭解以下類型的驗證:
- 使用者驗證
- 使用者驗證 (登入) 應用程式的行為。使用者驗證通常是透過登入程序執行,過程中使用者會使用使用者名稱和密碼組合在應用程式中驗證身分。您可以使用「使用 Google 帳戶登入」功能,在應用程式中整合使用者驗證。
- 應用程式驗證
- 代表執行應用程式的使用者,直接向 Google 服務進行驗證的應用程式動作。應用程式驗證通常是使用應用程式程式碼中的預先建立憑證來進行。
- 授權
主體存取資料或執行作業所需的權限或「權威性」。系統會透過您在應用程式中編寫的程式碼執行授權行為。這個程式碼會通知使用者應用程式希望代表使用者採取行動;如果允許,則會使用應用程式的專屬憑證,從 Google 取得用於存取資料或執行作業的存取權杖。
- 憑證
用於軟體安全性的識別形式。在驗證方面,憑證通常是使用者名稱和密碼的組合。在 Google Workspace API 授權條款中,憑證通常是某種識別形式,例如不重複的密鑰字串,只有應用程式開發人員和驗證伺服器才能知道。Google 支援以下驗證憑證:API 金鑰、OAuth 2.0 用戶端 ID 和服務帳戶。
- API 金鑰
- 用於要求存取公開資料的憑證,例如使用 Maps API 提供的資料,或 Google Workspace 檔案透過 Google Workspace 共用設定中的「網際網路上知道這個連結的所有使用者」共用的資料。
- OAuth 2 用戶端 ID
- 用來要求存取使用者擁有資料的憑證。這是透過 Google Workspace API 要求存取資料時使用的主要憑證。這項憑證需要使用者同意。
- 用戶端密鑰
- 僅限應用程式和授權伺服器知道的字元字串。用戶端密鑰只會將權杖授予授權要求者,藉此保護使用者的資料。請勿在應用程式中加入未加密的用戶端密鑰。建議您妥善儲存用戶端密鑰。詳情請參閱「安全處理用戶端憑證」一文。
- 服務帳戶金鑰
- 服務帳戶會使用這個金鑰,取得 Google 服務的授權。
- 服務帳戶
- 用於伺服器對伺服器互動的憑證,例如做為存取某些資料或執行某些作業的程序執行的無臉孔應用程式。服務帳戶通常用於存取雲端資料和作業,不過,與全網域授權委派搭配使用時,也可以存取使用者資料。
- 範圍
OAuth 2.0 URI 字串,定義已授予應用程式的資源或動作存取層級。以 Google Workspace 來說,授權範圍 URI 包含 Google Workspace 應用程式名稱、其存取的資料類型及存取層級。應用程式的使用者可查看要求的範圍,並選擇要授予的存取權,然後 Google 的驗證伺服器會透過存取權杖將允許的範圍傳回您的應用程式。詳情請參閱如何選擇應用程式的範圍。
- 授權伺服器
用於授予應用程式要求資料和作業存取權的 Google 伺服器,使用存取權杖。
- 授權碼
用來取得存取權杖的授權伺服器傳來的代碼。只有在應用程式類型是網路伺服器應用程式或已安裝的應用程式時,才需要使用程式碼。
- 存取權杖
授予 Google Workspace API 存取權的憑證。單一存取權杖可授予多個 API 的存取權不同程度 (稱為「範圍」)。您的應用程式授權碼會要求存取權杖,並使用這些權杖叫用 Google Workspace API。
- 資源伺服器
代管應用程式要呼叫 API 的伺服器。
- OAuth 2.0 架構
應用程式可向應用程式使用者提供「安全委派存取權」,或代表應用程式使用者存取資料和作業的標準。在應用程式中使用的驗證和授權機制代表您實作 OAuth 2.0 架構。
- 主體
可以授予資源存取權的實體,也稱為「身分」。Google Workspace API 支援兩種主體:使用者帳戶和服務帳戶。詳情請參閱主體。
- 資料類型
在驗證和授權情境中,資料類型是指擁有應用程式嘗試存取資料的實體。資料類型有三種:
- 公有領域資料
- 所有使用者可存取的資料,例如部分 Google 地圖資料。這項資料通常會使用 API 金鑰存取。
- 使用者資料
- 屬於特定使用者或群組的資料,例如特定使用者的 Google 雲端硬碟檔案。此資料類型通常使用 OAuth 2 用戶端 ID 或服務帳戶來存取。
- 雲端資料
- Google Cloud 專案擁有的資料。此資料類型通常可透過服務帳戶存取。
- 使用者同意聲明
驗證步驟,要求應用程式的使用者授權應用程式存取資料並代表使用者執行作業。
- 應用程式類型
您要建立的應用程式類型。使用 Google Cloud 控制台建立憑證時,系統會要求您選取應用程式類型。應用程式類型包括:網頁應用程式 (JavaScript)、Android、Chrome 應用程式、iOS、電視和受限制的輸入裝置、電腦應用程式 (也稱為「已安裝的應用程式」) 和通用 Windows 平台 (UWP)。
- 服務帳戶
一種特殊的 Google 帳戶,代表需要驗證及存取資料的非真人使用者。您的應用程式會假設服務帳戶的身分能呼叫 Google API,因此使用者不會直接參與其中。服務帳戶本身無法用於存取使用者資料,也無法使用 Workspace API 自訂存取的資料。然而,服務帳戶可以透過實作全網域授權委派來存取使用者資料。詳情請參閱瞭解服務帳戶。
- 全網域授權委派
這項管理功能可授權應用程式代表 Google Workspace 機構中的使用者存取使用者資料。全網域委派可用於對使用者資料執行管理員相關工作。如要透過這種方式委派授權,Google Workspace 管理員會使用服務帳戶搭配 OAuth 2.0。由於這項功能的效用,只有超級管理員才能啟用全網域的授權委派功能。詳情請參閱「將全網域授權委派給服務帳戶」。
後續步驟
設定應用程式的 OAuth 同意畫面,確保使用者能夠瞭解及核准應用程式的資料存取權。