用途:为新建或已有的 Grove 项目接入 Heartwood 认证,从客户端注册到生产部署。触发场景包括用户要求“给项目加认证”“接入 Heartwood”“注册 OAuth 客户端”,或提到登录、受保护路由、会话校验。
主要能力:注册 OAuth 客户端(生成 client secret 与 base64url 哈希并写入 D1 的 clients 表);配置客户端密钥;编写 SvelteKit 认证代码(登录发起、回调、会话校验 hook、类型定义、受保护路由布局、登出);配置 wrangler.toml 服务绑定;测试完整流程。
关键地址:登录 UI https://heartwood.grove.place;API https://auth-api.grove.place;D1 数据库 groveauth(经 wrangler)。
流程:识别集成 → 注册客户端 → 配置密钥 → 编写代码 → 配置 Wrangler → 测试。注册时用 openssl rand -base64 32 生成密钥,哈希须为 base64url(-、_、无 = 填充)。插入数据库命令:wrangler d1 execute groveauth --remote --command="..."。Pages 项目用 wrangler pages secret put 设置 GROVEAUTH_CLIENT_ID、GROVEAUTH_CLIENT_SECRET、GROVEAUTH_REDIRECT_URI、GROVEAUTH_URL;Workers 项目用 wrangler secret put。redirect_uris 与 allowed_origins 须同时包含生产与 localhost。
会话校验两种方式:Token Verify(/verify,约 50-150ms,跨账号)与 SessionDO(/session/validate,约 5-20ms,需同 Cloudflare 账号服务绑定,推荐)。.grove.place 子域共享 grove_session cookie 实现 SSO。令牌生命周期:access token 1 小时、refresh token 30 天、PKCE verifier 与 state 各 10 分钟且单次使用。
限制:认证错误须使用 AUTH_ERRORS Signpost 目录,不可用裸重定向与临时错误字符串;catch 块须用 Rootwork 类型守卫 isRedirect()、isHttpError()。密钥不得写入 wrangler.toml。SessionDO 仅限同一 Cloudflare 账号。资料未提供收费、价格与效果信息。