身份验证和授权是分别用于验证身份和资源访问权限的机制。本文档介绍了在应用中实现身份验证和授权之前应了解的关键术语。
身份验证用于确定请求的发出者是谁。 授权用于确定请求者可以访问哪些资源以及他们拥有哪些访问权限级别。身份验证是授权的前提条件。如果不先确定请求者的身份,就无法确定要访问哪些资源。如需了解更详细的定义,请参阅重要术语部分。
请看以下简化的酒店预订示例。当您抵达酒店时,前台服务员会要求您出示身份证件以验证您的预订。您的身份证件可用于向酒店验证您的身份。前台服务员给了您一张酒店房卡。此房卡可让您使用酒店的某些资源,例如客房、健身房和商务中心。酒店密钥可授权您访问这些资源。
流程概览
下图显示了 Google Workspace API 的身份验证和授权的高级步骤:

配置 Google Cloud 项目和应用:在开发期间,您需要在 Google Cloud 控制台中注册应用,定义授权范围和访问凭据,以便使用 API 密钥、最终用户凭据或服务账号凭据对应用进行身份验证。
对应用进行身份验证以获取访问权限:当应用运行时,系统会评估已注册的访问凭据。如果您的应用以最终用户的身份进行身份验证,系统可能会显示登录提示。
请求资源:当您的应用需要访问 Google 资源时,它会使用您之前注册的相关访问范围向 Google 发出请求。
征求用户同意:如果您的应用以最终用户的身份进行身份验证,Google 会显示 OAuth 权限请求页面,以便用户决定是否授予您的应用访问所请求数据的权限。
发送已获批准的资源请求:如果用户同意访问范围,您的应用会将凭据和用户批准的访问范围捆绑到请求中。该请求会发送到 Google 授权服务器,以获取访问令牌。
Google 返回访问令牌:访问令牌包含已授予的访问范围列表。如果返回的授权范围列表比请求的访问权限范围更有限,您的应用会停用受令牌限制的任何功能。
访问所请求的资源:您的应用使用来自 Google 的访问令牌来调用相关 API 并访问资源。
获取刷新令牌(可选):如果您的应用需要访问 Google API,但访问时间超出单个访问令牌的生命周期,则可以获取刷新令牌。
请求更多资源:如果需要更多访问权限,您的应用会请求用户授予新的访问权限范围,从而导致新的获取访问令牌的请求(步骤 3-6)。
重要术语
以下是与身份验证和授权相关的术语列表:
- Authentication
确保正文(可以是用户,也可以是代表用户行事的应用)是其声称的身份。编写 Google Workspace 应用时,您应了解以下类型的身份验证:
- 用户身份验证
- 用户向您的应用进行身份验证(登录)的行为。用户身份验证通常通过登录流程进行,在此流程中,用户使用用户名和密码组合向应用验证自己的身份。可以使用 Sign In With 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 的服务器,用于使用访问令牌向应用授予对所请求的数据和操作的访问权限。
- 授权代码
从授权服务器发送的用于获取访问令牌的代码。仅当应用类型为 Web 服务器应用或安装式应用时,才需要代码。
- 访问令牌
授予对 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 控制台创建凭据时,系统会要求您选择应用类型。应用类型包括:Web 应用 (JavaScript)、Android、Chrome 应用、iOS、电视和有限输入设备、桌面应用(也称为“已安装的应用”)以及通用 Windows 平台 (UWP)。
- 服务账号
一种特殊类型的 Google 账号,用于表示需要验证身份并获得授权以访问数据的非人类用户。您的应用会使用服务账号的身份调用 Google API,这样用户就不必直接参与其中。服务账号本身不能用于访问用户数据;用户数据通常使用 Workspace API 进行访问。不过,服务账号可以通过实现全网域授权来访问用户数据。如需了解详情,请参阅了解服务账号。
- 全网域授权
一项管理功能,可授权应用代表 Google Workspace 组织中的用户访问用户数据。全网域授权可用于对用户数据执行与管理员相关的任务。如需通过这种方式委派权限,Google Workspace 管理员可以使用采用 OAuth 2.0 的服务账号。由于此功能非常强大,因此只有超级用户才能启用全网域授权。如需了解详情,请参阅将全网域授权委派给服务账号。
下一步
配置应用的 OAuth 权限请求页面,确保用户能够了解并批准您的应用对他们的数据的访问权限。