Genkit 支持 flow 级身份验证,可让您保护 flow 并确保只有获授权的用户才能执行 flow。将 flow 部署为 HTTP 端点时,此功能尤为有用。
配置 flow 身份验证
如需向 flow 添加身份验证,您可以在定义 flow 时使用 WithFlowAuth
选项。此选项采用 FlowAuth
接口的实现,以提供用于处理身份验证和授权的方法。
下面的示例展示了如何定义包含身份验证的 flow:
// TODO: Replace code snippet.
在此示例中,我们将使用 Firebase Auth 插件来处理身份验证。policy
函数定义授权逻辑,检查授权上下文中的用户 ID 是否与输入的用户 ID 匹配。
使用 Firebase Auth 插件
Firebase Auth 插件提供了一种轻松的方法,可将 Firebase Authentication 与 Genkit flow 集成。以下是使用方法:
导入 Firebase 插件:
import "github.com/firebase/genkit/go/plugins/firebase"
创建 Firebase Auth 提供方:
// TODO: Replace code snippet.
NewAuth
函数接受三个参数:ctx
:Firebase 初始化的上下文。policy
:用于定义授权逻辑的函数。required
:一个布尔值,指示是否需要对直接调用进行身份验证。
在定义 flow 时使用身份验证提供方:
// TODO: Replace code snippet.
处理 HTTP 请求中的身份验证
将 flow 部署为 HTTP 端点后,Firebase Auth 插件会自动处理传入请求的身份验证。它需要在 HTTP 请求的 Authorization 标头中包含不记名令牌。
在本地运行经过身份验证的 flow
在本地或从其他 flow 中运行经过身份验证的 flow 时,您可以使用 WithLocalAuth
选项提供本地身份验证上下文:
// TODO: Replace code snippet.
这样,您就可以测试经过身份验证的 flow,而无需提供有效的 Firebase 令牌。