octop v0.9.20 的 jwt 密钥设置本质是用户级隔离:先启用多用户并执行记忆迁移,再将 auth.yaml 中 isolation_mode 改为 user_context,最后运行 octopctl jwt salt --all-users 为每位用户生成唯一 salt_hash,系统自动派生 per-user 签名密钥。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Octop v0.9.20 的 JWT 认证密钥设置不是直接配置一个全局密钥,而是围绕用户上下文隔离(user_context isolation) 和密钥盐值(salt_hash) 展开的。它不使用传统意义上的 JWT_SECRET 静态密钥,而是为每个用户动态派生唯一签名凭据,从根本上防止跨用户 Token 伪造或越权访问。
核心逻辑是:密钥 = 全局密钥基底 + 用户专属 salt_hash。因此,“设置 JWT 认证密钥”在 Octop 中实际指完成三步初始化闭环:
一、启用多用户模式并执行记忆迁移
这是强制前置步骤,跳过会导致 JWT 隔离失效、所有用户共享会话。
- 登录后台
https://octop.yourdomain.com/admin→ 进入「系统设置 → 多用户」 - 勾选【启用多用户模式】→ 点击「保存并重启服务」
- 重启完成后,立即在服务器终端执行迁移命令:
curl -X POST http://localhost:8080/api/v1/memory/migrate --data '{"force":true}'
二、配置 JWT 隔离策略为 user_context
修改认证配置文件,激活用户级隔离:
- 编辑
/opt/octop/config/auth.yaml - 将字段
isolation_mode的值从none或global改为:isolation_mode: user_context
三、为所有用户生成并绑定唯一 salt_hash
这才是 Octop v0.9.20 “设置 JWT 密钥”的实质操作:
- 运行命令为每个已存在用户生成独立盐值,并写入数据库:
octopctl jwt salt --all-users
- 该命令会遍历
user_profiles表,为每位用户生成并存储salt_hash字段 - 后续所有 Token 签发都会自动组合全局密钥与该 salt,实现 per-user 签名
补充:验证与清理
- 强制刷新全部在线会话,确保旧 Token 失效:
curl -X DELETE http://localhost:8080/api/v1/sessions/active \ --header "X-Admin-Key: $(cat /opt/octop/secrets/admin.key)"
- 检查任意用户登录后生成的 Token,在服务端验证时会自动加载其 salt_hash,无需手动指定密钥路径或环境变量
整个过程不涉及 .env 中的 JWT_SECRET,也不需要手动生成 RSA 密钥对——Octop v0.9.20 将密钥管理下沉到用户维度,由系统自动完成派生与绑定。











