您可以为 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 API 和 Vertex AI Gemini API 发出的所有请求。
- 此设置适用于使用服务器提示模板的所有请求。
- 此设置无法按用户、按 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 保护。
- 此设置会阻止未发送 Firebase Authentication 凭据的推理请求。这包括对服务器提示模板(例如
此设置不会阻止对
countTokens(令牌计数 API)的请求。
在强制执行“已通过身份验证的用户”模式之前
在强制执行“已通过身份验证的用户”模式之前,请注意以下事项:
如果您的任何现有版本的应用未使用 Firebase Authentication:
- 此设置将屏蔽通过 Firebase AI Logic 从这些现有应用版本发出的请求。
- 在强制执行“已通过身份验证的用户”模式之前,请确保所有活跃客户端都已更新为使用 Firebase Authentication 。
旧版 Flutter 插件需要特殊实例化才能随请求发送 Firebase Authentication 凭据。
- 如果您的应用使用的是 Flutter 插件
firebase_aiv3.11.0 或更低版本(BoM v4.12.0 或更低版本),并且在实例化期间未传入 Authentication,则此设置会通过 Firebase AI Logic 阻止请求,即使是经过身份验证的用户也会受到影响。 - 在强制执行“已通过身份验证的用户”模式之前,请确保所有活跃的 Flutter 客户端都已更新为较新版本的插件。
- 如果您的应用使用的是 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 角色中:所有者、编辑者、Firebase 管理员和 Firebase AI Logic 管理员。
强制执行“已通过身份验证的用户”模式
以下是如何为 Firebase 项目强制执行“已通过身份验证的用户”模式:
如果您尚未这样做,请查看本指南前面部分中有关已验证用户模式的重要注意事项。
如果您尚未在应用中设置 Firebase Authentication(如本指南前文所述),请执行此操作。
强制执行“已通过身份验证的用户”模式:
在 Firebase 控制台中,依次前往 AI 服务 > AI 逻辑 > “设置”标签页。
在“已通过身份验证的用户”模式下,将强制执行“已通过身份验证的用户”模式的切换开关滑动到强制执行。
查看确认对话框,然后点击确认。
停止强制执行“已通过身份验证的用户”模式
如果您停止强制执行“已通过身份验证的用户”模式,请注意以下事项:
- 系统将允许通过 Firebase AI Logic 发起且未发送 Firebase Authentication 凭据的请求。
- 这是针对 Firebase AI Logic 的项目级设置。
如需停止为 Firebase 项目强制执行“已通过身份验证的用户”模式,请按以下步骤操作:
在 Firebase 控制台中,依次前往 AI 服务 > AI 逻辑 > “设置”标签页。
在“已通过身份验证的用户”模式下,关闭强制执行“已通过身份验证的用户”模式。
查看确认对话框,然后点击确认。