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

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

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

重要注意事项

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

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

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

  • 此设置是 项目级 设置,适用于 Firebase AI Logic

    • 它适用于在项目中注册的所有应用。
    • 它仅适用于强制执行该设置的项目。
  • 此设置会阻止 通过 Firebase AI Logic 发送的所有请求,这些请求不会发送 Firebase Authentication 凭据。

    • 用户必须先通过 Firebase Authentication 进行身份验证,然后才能向 Firebase AI Logic 发送请求 。
    • 此设置适用于通过 Firebase AI Logic 发送给 Gemini Developer APIAgent 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凭据的推理请求。这包括对服务器提示模板(如 templateGenerateContenttemplateStreamGenerateContent)的请求。
    • 此设置不会阻止 控制平面请求(例如用于 管理模板和配置的请求),因为它们受到 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 Authentication 凭据,以响应向 Firebase AI Logic 发出的每个 请求。

请注意以下有关某些身份验证提供商的信息:

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

  • 匿名电子邮件/密码 身份验证方法:这些用户被视为 已通过身份验证的用户,因此他们向 Firebase AI Logic 发出的请求 不会被阻止。

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

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

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

所需的 IAM 权限和角色

管理“通过身份验证的用户”模式设置需要 firebasevertexai.configs.update 权限,该权限默认包含在以下 IAM 角色中:所有者、编辑者、Firebase 管理员和 Firebase AI Logic 管理员。

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

如需为 Firebase 项目强制执行“通过身份验证的用户”模式,请按以下步骤操作:

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

  2. 如果您尚未这样做,请在应用中设置Firebase Authentication (如本指南前面部分所述)。

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

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

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

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

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

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

  • 系统将允许通过 Firebase AI Logic 发送的未发送 not Firebase Authentication 凭据的请求。
  • 此设置是 项目级 设置,适用于 Firebase AI Logic

如需为 Firebase 项目停止强制执行“通过身份验证的用户”模式,请按以下步骤操作:

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

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

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