了解身份验证与授权

身份验证和授权是分别用于验证身份和对资源的访问的机制。本文档介绍了在您的应用中实现身份验证和授权之前您应该了解的关键术语。

身份验证功能可确定发出请求的用户。 授权用于识别请求者可以访问的资源以及访问权限级别。身份验证是授权的前提条件。您必须先确定请求者的身份,然后才能确定要访问的资源。如需了解更详细的定义,请参阅重要术语部分

请看以下简化的酒店预订示例。当您到达酒店时,前台工作人员会验证您的 ID 以验证您的预订信息。您的身份证件会您进行身份验证。前台服务员为您提供酒店钥匙。您可以使用此密钥访问酒店中的某些资源,例如酒店客房、健身房和商务中心。酒店密钥授权您访问这些资源。

流程概览

下图概要显示了 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 密钥
用于请求访问公开数据的凭据,例如使用 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 控制台创建凭据时,系统会要求您选择应用类型。应用类型包括:Web 应用 (JavaScript)、Android、Chrome 应用、iOS、电视和受限输入设备、桌面设备应用(也称为“已安装的应用”)以及通用 Windows 平台 (UWP)。

服务帐号

一种特殊类型的 Google 帐号,用于表示需要进行身份验证并获得授权才能访问数据的非人类用户。您的应用会假定服务帐号的身份来调用 Google API,这样用户就不会直接参与。服务帐号本身不能用于访问用户数据;使用 Workspace API 通常可以访问数据。但是,服务帐号可以通过实现全网域授权委托来访问用户数据。如需了解详情,请参阅了解服务帐号

全网域授权

一项管理功能,可以授权应用代表 Google Workspace 组织中的用户访问用户数据。全网域授权可用于对用户数据执行与管理员相关的任务。为了通过这种方式委托授权,Google Workspace 管理员会将服务帐号与 OAuth 2.0 结合使用。由于此功能强大,只有超级用户可以启用全网域授权。如需了解详情,请参阅将全网域授权委托给服务帐号

后续步骤

配置应用的 OAuth 权限请求页面,确保用户能够了解并批准应用对其数据的访问权限。