瞭解驗證和授權

驗證和授權是用來驗證身分和資源存取權的機制。本文會說明在應用程式中實作驗證和授權功能前,您應先瞭解的重要術語。

「驗證」會識別提出要求的使用者。「授權」會指出要求者可以存取的資源,以及他們的存取層級。驗證是授權的先決條件。您必須先建立要求者的身分,才能判斷要存取哪些資源。如需更詳細的定義,請參閱「重要術語」一節。

請參考以下簡化的飯店訂房範例。抵達飯店後,櫃檯人員會要求你出示身分證件,以便驗證你的訂房資料。飯店會透過身分證驗證你的身分。櫃檯人員會給你飯店房卡。這項權杖可讓你存取飯店的特定資源,例如飯店房間、健身房和商務中心。飯店房間金鑰會授權您存取這些資源。

流程總覽

下圖概略說明 Google Workspace API 的驗證和授權步驟:

驗證和授權實作項目的高階步驟
圖 1. 驗證和授權導入作業的概略步驟
  1. 設定 Google Cloud 專案和應用程式:在開發期間,您可以在 Google Cloud 控制台註冊應用程式,定義授權範圍和存取憑證,以便使用 API 金鑰、使用者憑證或服務帳戶憑證驗證應用程式。

  2. 驗證應用程式存取權:應用程式執行時,系統會評估已註冊的存取憑證。如果應用程式以使用者身分進行驗證,可能會顯示登入提示。

  3. 要求資源:當應用程式需要存取 Google 資源時,會使用您先前註冊的相關存取範圍向 Google 提出要求。

  4. 要求使用者同意:如果您的應用程式以使用者身分進行驗證,Google 會顯示 OAuth 同意畫面,讓使用者決定是否要授予應用程式存取要求資料的權限。

  5. 傳送已核准的資源要求:如果使用者同意存取範圍,應用程式就會將憑證和使用者核准的存取範圍,打包至要求中。要求會傳送至 Google 授權伺服器,以便取得存取權杖。

  6. Google 傳回存取權杖:存取權杖包含已授予的存取範圍清單。如果傳回的範圍清單比要求的存取範圍更受限制,應用程式會停用任何受權杖限制的功能。

  7. 存取要求的資源:應用程式會使用 Google 提供的存取權杖,叫用相關 API 並存取資源。

  8. 取得更新權杖 (選用):如果應用程式需要存取 Google API 的存取權,且存取權有效期限超過單一存取權杖的有效期限,則可取得更新權杖。

  9. 要求更多資源:如果需要額外存取權,應用程式會要求使用者授予新的存取範圍,進而產生新的要求,以便取得存取權杖 (步驟 3 至 6)。

重要術語

以下列出與驗證和授權相關的條款:

驗證

確保「原始擁有者」 (可以是使用者或代表使用者行動的應用程式) 的身份與其所聲稱的一致。編寫 Google Workspace 應用程式時,請注意下列驗證類型:

使用者驗證
使用者驗證 (登入) 應用程式的行為。使用者驗證通常會透過登入程序執行,在該程序中,使用者會使用使用者名稱和密碼組合,向應用程式驗證自己的身分。使用者驗證可透過「使用 Google 帳戶登入」功能整合至應用程式。
應用程式驗證
應用程式代表執行應用程式的使用者,直接向 Google 服務進行驗證的行為。應用程式驗證通常會使用應用程式程式碼中預先建立的憑證執行。
授權

實體擁有的權限或「授權」,用於存取資料或執行作業。授權動作會透過您在應用程式中編寫的程式碼執行。此程式碼會通知使用者,應用程式希望代為執行操作,並在獲得許可後,使用應用程式的專屬憑證,從 Google 取得用於存取資料或執行作業的存取權杖

憑證

一種用於軟體安全性的識別形式。在驗證方面,憑證通常是使用者名稱和密碼的組合。就 Google Workspace API 授權而言,憑證通常是某種形式的識別資訊,例如專屬的密碼字串,只有應用程式開發人員和驗證伺服器才知道。Google 支援以下驗證憑證:API 金鑰、OAuth 2.0 用戶端 ID 和服務帳戶。

API 金鑰
用於要求存取公開資料的憑證,例如透過 Google 地圖 API 提供的資料,或是透過 Google Workspace 共用設定中的「Anyone on the Internet with this link」設定共用的 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 架構

Principal

實體 (也稱為身分),可授予資源存取權。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 同意畫面,確保使用者能瞭解並核准應用程式對其資料的存取權。