SuperAPI AI 工具集

genesis-auth

安全与审计

查看项目

更新于 10-16 00:02

技能介绍

用途:为使用 genesis 脚手架的项目添加认证功能,覆盖登录、会话、SSO 和管理员用户。用户选择认证等级(basic/standard/strict)并说明需求,技能自行推导实现机制(如 JWT 还是 cookie),不向用户追问实现细节,然后直接把代码写入目标项目。它是指导性技能而非复制模板,需先阅读目标项目现有代码再编写匹配的认证逻辑。

前提:服务器需具备 genesis 数据库层 internal/db,含 goose 迁移、sqlc 和 users 表。genesis CLI 不生成该层,缺失时应停止并提示用户先用 /genesis sqlc 添加。

等级:basic 面向内部工具,从环境变量播种单个管理员、密码登录、Postgres 中的 cookie 会话,无注册无邮件;standard 面向普通应用,邮箱+密码、邮箱验证、可选 Google/Apple SSO、Postgres 会话、密码重置、管理员/用户角色;strict 面向敏感数据,在 standard 基础上增加 TOTP MFA、限流与临时锁定、权限变更时会话轮换、审计日志,超出此范围建议改用外部 IdP(Keycloak、Auth0、WorkOS)。

使用方式:先读取参数,basic/standard/strict 决定等级,google/apple 决定 SSO;仅询问仍缺失的信息,并在一次 AskUserQuestion 调用中完成,推荐项在前并标注 (Recommended)。机制由技能推导:仅浏览器用 cookie(HttpOnly、Secure、SameSite=Lax)加 Postgres 服务端会话令牌,同源经 Vite 代理/nginx 访问 API,不加 CORS;移动/API 消费者在 cookie 流程外增加不透明 bearer 令牌和 API 密钥,不用 JWT(登出、重置、角色变更时无法撤销)。确认时用文字描述推导方案,用户可覆盖机制但需说明取舍。

实现规则:先读目标项目,匹配其路由、配置结构、迁移编号和包布局;扩展现有 users 表而非新建;按 genesis 服务器既有布局放置 internal/auth、handler、dto、middleware、迁移和 sqlc 查询,并在 SetupRoute、Services、main.go 中接线;配置走既有机制,密钥不入 application.yml 并标 mask:"true";优先用标准库和现有依赖(bcrypt、crypto/rand);不记录或返回密钥,令牌只存 SHA-256 哈希;重置需原子完成;时间戳用 TIMESTAMPTZ;过期数据需定期清理;拒绝超过 72 字节的密码;邮件经 Mailer 接口,SMTP 未配置时返回 503;SSO 用 oauth2 与 go-oidc,校验 state、PKCE、nonce,按 (provider, subject) 标识身份;每个等级都从配置播种首个管理员;strict 的限流与锁定状态存 Postgres 并设置可信代理。

验证:make build 通过、make generate 干净、每个新表或列都有 up/down 迁移、配置键齐全、cookie 属性正确、令牌哈希存储且登出删除行;需实际启动 docker-compose Postgres 并用 curl 验证登录、登出、受保护路由和角色检查,并测试并发重置、密码字节限制和过期清理。

限制:资料未提供具体价格、平台支持范围或性能数据;技能依赖 genesis 项目既有结构,不适用于非 genesis 项目。