仅限通过身份验证的用户发出请求

您可以为 Firebase 项目强制执行“已通过身份验证的用户”模式。强制执行后,通过 Firebase AI Logic 发起的所有 Gemini API 请求都必须来自应用的经过身份验证的用户。具体而言,应用的最终用户必须先使用 Firebase Authentication 进行身份验证,然后才能从应用向 Firebase AI Logic 发送请求。如果最终用户未经身份验证,请求将被屏蔽。

当请求被屏蔽时,响应将是 401: unauthenticated 错误。

重要注意事项

请注意以下有关“已通过身份验证的用户”模式的重要注意事项。

强制执行“已通过身份验证的用户”模式时

强制执行“已通过身份验证的用户”模式时,请注意以下事项:

  • 此设置是 Firebase AI Logic 的项目级设置。

    • 它适用于项目中注册的所有应用。
    • 它仅适用于强制执行该政策的项目。
  • 此设置会屏蔽通过 Firebase AI Logic 发出的所有未发送 Firebase Authentication 凭证的请求。

    • 用户必须在向 Firebase AI Logic 发送请求之前通过 Firebase Authentication 进行身份验证。
    • 此设置适用于通过 Firebase AI Logic 向 Gemini Developer API 和 Agent Platform Gemini API (formerly Vertex AI) 发出的所有请求。
    • 此设置适用于使用服务器提示模板的所有请求。
    • 此设置无法按用户、按 API 或按模板应用。
  • 此设置不会屏蔽项目中不通过 Firebase AI Logic 发出的 Gemini API 请求。

  • 如果您使用的是混合/设备端:

    • 如果用户未经身份验证,此设置会屏蔽对云托管模型的请求。
    • 无论用户的身份验证状态如何,此设置都不会阻止对设备端模型的请求。
  • 如果您使用的是 Gemini Live API:

    • 此设置会禁止在 使用 Firebase AI Logic 时通过 Web 应用使用 Gemini Live API,即使是经过身份验证的用户也不例外。这包括使用 Firebase JS SDK 的 Web 应用或 Flutter Web 应用。
  • 如果您使用的是 Firebase AI Logic REST API:

    • 此设置会屏蔽 未发送 Firebase Authentication 凭证的推理请求。这包括对服务器提示模板(例如 templateGenerateContent 或 templateStreamGenerateContent)的请求。
    • 此设置不会阻止 控制平面请求(例如用于管理模板和配置的请求),因为这些请求受 IAM 保护。
  • 此设置不会屏蔽对 countTokens(Count Tokens API)的请求。

在强制执行“已通过身份验证的用户”模式之前

在强制执行“已通过身份验证的用户”模式之前,请注意以下事项:

  • 如果您的任何现有应用版本未使用 Firebase Authentication:

    • 此设置将屏蔽来自这些现有应用版本的 Firebase AI Logic 请求。
    • 在强制执行“已通过身份验证的用户”模式之前,请确保所有活跃客户端都已更新为使用 Firebase Authentication。
  • 旧版 Flutter 插件需要特殊实例化才能在请求中发送 Firebase Authentication 凭据。

    • 如果您的应用使用 Flutter 插件 firebase_ai v3.11.0 或更低版本(BoM v4.12.0 或更低版本),并且在实例化期间未传入 Authentication,则此设置将阻止通过 Firebase AI Logic 发出的请求,即使是经过身份验证的用户也不例外。
    • 在强制执行经过身份验证的用户模式之前,请确保所有活跃的 Flutter 客户端都已更新到较新版本的插件。

设置 Firebase Authentication

Firebase Authentication 文档提供了受支持的身份验证提供方的说明和实现说明,包括使用密码、电话号码、主流联合身份提供方(如 Google、Facebook 和 GitHub)等。

在应用中实现 Firebase Authentication 后,应用会在向 Firebase AI Logic 发出的每个请求中自动发送经过身份验证的用户的 Firebase Authentication 凭据。

请注意以下有关部分身份验证提供方的事项:

  • 自定义身份验证:您需要提取已签名的身份验证令牌,以便与发送到 Firebase AI Logic 的请求一起发送。如需了解详情,请参阅自定义身份验证。

  • 匿名或电子邮件/密码身份验证方法:这些用户被视为经过身份验证的用户,因此他们对 Firebase AI Logic 的请求不会被屏蔽。

    请注意,虽然匿名和电子邮件/密码身份验证方法要求用户访问您的应用来创建 Firebase Authentication 凭据,但它们并不是可靠的身份验证形式(尤其是在保护付费资源方面),因为它们默认不要求用户进行身份验证。如果您的应用使用这些身份验证方法的默认实现,即使您强制执行“已通过身份验证的用户”模式,也可能无法获得足够的保护。确保您还强制执行了 Firebase App Check。

管理“已通过身份验证的用户”模式设置

您可以在 Firebase 控制台中管理“通过身份验证的用户”模式的设置。

所需的 IAM 权限和角色

管理经过身份验证的用户模式设置需要 firebasevertexai.configs.update 权限,以下 IAM 角色默认包含该权限:Owner、Editor、Firebase Admin 和 Firebase AI Logic Admin。

强制执行“已通过身份验证的用户”模式

以下是为 Firebase 项目强制执行“已通过身份验证的用户”模式的方法:

  1. 如果您尚未查看,请查看本指南前面部分中有关经过身份验证的用户模式的重要注意事项。

  2. 如果您尚未在应用中设置 Firebase Authentication,请按照本指南前面的说明进行设置。

  3. 强制执行“已通过身份验证的用户”模式:

    1. 在 Firebase 控制台中,依次前往 AI 服务 > AI Logic > 设置标签页。

    2. 在“通过身份验证的用户”模式下,将强制执行“通过身份验证的用户”模式的切换开关滑动到强制执行。

    3. 查看确认对话框,然后点击确认。

停止强制执行“已通过身份验证的用户”模式

如果您停止强制执行“已通过身份验证的用户”模式,请注意以下事项:

  • 系统将允许通过 Firebase AI Logic 发起且未发送 Firebase Authentication 凭证的请求。
  • 这是一项针对 Firebase AI Logic 的项目级设置。

以下是为 Firebase 项目停止强制执行“已通过身份验证的用户”模式的方法:

  1. 在 Firebase 控制台中,依次前往 AI 服务 > AI Logic > 设置标签页。

  2. 在“已通过身份验证的用户”模式下,关闭强制执行“已通过身份验证的用户”模式。

  3. 查看确认对话框,然后点击确认。