关于 spider-weave
用于在 Web 应用中实现认证的分阶段技能,指导从设计到测试和收尾检查。内容涵盖会话、OAuth 2.0 与 PKCE、路由保护及安全加固。
主要功能
- 01选择认证模式并搭建项目结构
- 02OAuth 登录与回调流程
- 03会话管理与路由保护
- 04RBAC、CSRF、安全头与限流
- 05认证和安全测试
- 06集成检查清单与事件日志
适用场景
- 01添加 PKCE OAuth 登录
- 02保护路由并执行角色限制
- 03加固会话与认证端点
- 04测试认证流程和边界情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ autumnsgrove/ lattice --skill spider-weave安装后在 Claude Code 中输入/spider-weave确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/heartwood-integration.mdoauth-pkce-flow.mdroute-protection.mdsecurity-headers.mdsession-management.md详细介绍
Spider Weave
蜘蛛不会急于求成。它一次只织一根丝线,每次都仔细锚定后再继续下一根。蛛网自然地生长——先织出放射状丝线,再织螺旋线,并逐一测试每个连接点的强度。完成后,蛛网能捕捉重要之物,同时让风穿过。以这种方式织成的身份验证结构牢固、可靠,且结构优美。
何时启用
- 用户要求“添加身份验证”或“设置身份验证”
- 用户说“保护此路由”或“添加登录”
- 用户调用
/spider-weave或提及 spider/auth - 集成 OAuth(Google、GitHub 等)
- 设置会话管理
- 保护 API 路由
- 添加基于角色的访问控制(RBAC)
- 实现 PKCE 流程
- 连接到 Heartwood(GroveAuth)
搭配使用: 使用 raccoon-audit 进行安全审查,使用 beaver-build 测试身份验证
编织过程
SPIN --> CONNECT --> SECURE --> TEST --> BIND
| | | | |
Create Link Harden Verify Lock In
Threads Strands Knots Web Security
阶段 1:编织
蜘蛛织出第一根丝线,仔细地将它锚定在框架的一角……
创建基础身份验证结构。选择一种模式,搭建文件框架,定义架构,并在编写任何逻辑之前配置环境变量。
- 根据应用类型和用户需求选择身份验证模式:Session、JWT、OAuth 2.0、PKCE 或 API Keys
- 搭建
src/lib/auth/,包含index.ts、types.ts、session.ts、middleware.ts、pkce.ts、client.ts - 在数据库架构中定义 users 和 sessions 表
- 设置所需的环境变量:client IDs、secrets、authorize/token/userinfo URLs、redirect URI、session secret
参考: 加载 references/oauth-pkce-flow.md,查看 PKCE 设置代码、数据库架构、环境变量列表和完整文件结构
阶段 2:连接
丝线彼此相连,蛛网在框架上逐渐成形……
连接身份验证系统各部分:实现 OAuth 登录重定向、回调处理程序、用户插入或更新以及会话创建。然后配置客户端身份验证状态存储。
- 实现登录路由:生成 PKCE verifier + challenge,设置 cookies,并重定向到提供方
- 实现回调路由:验证 state,交换 code 以获取 tokens,获取 userinfo,插入或更新用户,创建会话,并清理 PKCE cookies
- 构建会话创建(
createSession)、验证(validateSession)和失效处理(invalidateSession) - 设置客户端
auth状态存储,并使用loadUser()在 Svelte 中实现响应式身份验证状态
参考: 加载 references/oauth-pkce-flow.md,查看完整的登录和回调路由实现;加载 references/session-management.md,查看会话函数和身份验证状态存储
阶段 3:加固
蜘蛛测试每个结点,收紧松动之处,剪去不该存在的部分……
在将身份验证系统用于用户之前,先加固它。添加路由保护、安全标头、CSRF 验证和速率限制。
- 在
hooks.server.ts中实现requireAuth()中间件以验证会话 - 为 RBAC 实现
requireRole(allowedRoles)——未经授权时返回 403 - 为每个响应设置安全标头:
X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Content-Security-Policy - 为会改变状态的端点添加 CSRF 来源验证
- 添加速率限制:每个 IP 每 15 分钟最多尝试 5 次,适用于身份验证端点
参考: 加载 references/route-protection.md,查看中间件代码和 RBAC 模式;加载 references/security-headers.md,查看标头、CSRF、速率限制和 Cloudflare 边缘规则
阶段 4:测试
蜘蛛拨动丝线,确认每根丝线都以正确的频率振动……
全面测试身份验证,覆盖正常流程、安全边界情况和故障模式。自动化测试可捕获回归问题;安全测试可验证这些结是否牢固。
- 测试完整的 OAuth 流程:带有 PKCE challenge 的重定向、回调处理、会话创建
- 测试路由保护:未通过身份验证时重定向、通过身份验证后访问、角色限制
- 测试安全属性:拒绝 CSRF 状态、Cookie 安全属性、防止会话固定
- 覆盖故障模式:会话过期、无效代码、OAuth 权限被拒绝
**参考:**加载 references/oauth-pkce-flow.md,查看 OAuth 流程测试;加载 references/route-protection.md,查看路由保护测试套件
阶段 5:收尾
网络已经织成,每根丝线都紧密相连,整体比丝线之和更加牢固……
完成并锁定身份验证。优化用户体验、配置监控,并生成完成报告。
- 核对集成检查清单:登录、登出、受保护路由、会话过期、错误处理、速率限制、CSRF、标头、Cookie
- 为登录界面添加加载和错误状态,并正确设置
aria-busy和role="alert"属性 - 配置身份验证事件日志(userId、provider、IP——绝不记录令牌或密码)
- 对可疑活动发出警报(同一标识符有 10 次以上失败尝试)
- 生成完成报告:提供方、流程类型、创建的文件、已确认的安全功能、测试数量
**参考:**加载 references/session-management.md,查看完整的集成检查清单、登录界面代码片段、监控模式和完成报告模板。加载 references/heartwood-integration.md,查看 Grove 专属的登出流程和角色分配。
参考路由表
| 阶段 | 参考 | 加载时机 |
|---|---|---|
| SPIN | references/oauth-pkce-flow.md | 始终加载——基础代码位于此处 |
| CONNECT | references/oauth-pkce-flow.md + references/session-management.md | 实现登录/回调/会话时 |
| SECURE | references/route-protection.md + references/security-headers.md | 添加中间件、标头、速率限制时 |
| TEST | references/oauth-pkce-flow.md + references/route-protection.md | 编写身份验证和路由测试时 |
| BIND | references/session-management.md + references/heartwood-integration.md | 完成收尾、日志记录和报告时 |
| Grove/Heartwood | references/heartwood-integration.md | 进行任何 Grove 生态系统集成时 |
蜘蛛规则
耐心
一次织一根丝线。不要急着一次连接所有内容。添加下一根丝线之前,必须先确保当前丝线安全可靠。
精准
身份验证中的小错误可能造成严重后果。核实每次重定向,检查每个令牌,验证每个会话。
完整
有漏洞的网什么也捕不到。测试错误路径、边界情况和故障模式。安全性只取决于最薄弱的那根丝线。
沟通
使用编织隐喻:
- “正在纺织丝线……”(建立基础)
- “正在连接丝线……”(关联组件)
- “正在测试绳结……”(强化安全性)
- “网结牢固……”(验证完成)
反模式
蜘蛛绝不会:
- 以明文形式存储密码(绝不)
- 在 OAuth 流程中跳过 PKCE
- 不经验证就信任用户输入
- 在配置中保留默认密钥
- 忽略会话过期
- 记录敏感数据(令牌、密码)
- 不经验证就反射
redirect_uri或next参数(开放重定向) - 通过 OAuth 声明分配管理员角色(只能手动分配数据库角色)
编织示例
用户:“添加 GitHub OAuth 登录”
Spider 流程:
-
SPIN — “在 GitHub 中创建 OAuth 应用,生成客户端凭据,设置 PKCE 实用工具,创建认证端点结构”
-
CONNECT — “实现 /auth/github/login 重定向、/auth/github/callback 处理程序、用户插入或更新逻辑、会话创建”
-
SECURE — “添加 CSRF 状态验证、安全的 Cookie 设置、对认证端点进行速率限制,为新用户分配角色”
-
TEST — “测试 OAuth 流程、回调处理、会话创建、受保护路由访问,以及错误情况(权限被拒绝)”
-
BIND — “在 UI 中添加登录按钮、错误状态处理、加载状态、文档和监控”
快速决策指南
| 情况 | 方案 |
|---|---|
| 简单应用,内部用户 | 基于会话的认证 |
| 公共应用,社交登录 | OAuth 2.0 + PKCE |
| 面向移动端/SPA 的 API | 带刷新令牌的 JWT |
| 服务间通信 | 使用 IP 允许列表的 API 密钥 |
| Grove 生态系统 | Heartwood 集成(加载 references/heartwood-integration.md) |
与其他技能集成
编织之前:
eagle-architect— 用于认证系统设计决策swan-design— 用于认证流程规范
编织期间:
elephant-build— 用于多文件认证实现raccoon-audit— 用于安全审查
编织之后:
beaver-build— 用于认证测试turtle-harden— 用于超越 Web 范畴的纵深防御加固deer-sense— 用于登录 UI 的无障碍审查
编织精良的蛛网能拦住入侵者,同时让朋友顺利通过。