门禁兼容修复

This commit is contained in:
andy committed 2026-09-05 17:36:23 +08:00
1 parent f60b416949
commit 801c0af692
18 files changed
+257 -87

No files matched your search

@@ -55,7 +55,10 @@ FIRE_SAFETY_SUPERAGENT_BASE_URL=https://<superagent-domain>
FIRE_SAFETY_SUPERAGENT_OPEN_API_KEY=<superagent-open-api-key>
FIRE_SAFETY_CHAT_ENABLED=true
FIRE_SAFETY_CHAT_AUTH_TOKEN=<chat-xtoken-at-least-32-printable-ascii-characters>
FIRE_SAFETY_CHAT_AUTH_TOKEN=<chat-xtoken>
# Keep false for new environments. Only set true in a controlled migration
# when an already-issued legacy Chat credential is shorter than 32 characters.
FIRE_SAFETY_CHAT_ALLOW_LEGACY_SHORT_TOKEN=false
FIRE_SAFETY_CHAT_COMPAT_APP_ID=<same-safe-app-id-as-nginx-location>
FIRE_SAFETY_MCP_ENABLED=true
@@ -67,9 +70,11 @@ FIRE_SAFETY_POSTGIS_DSN=<readonly-postgresql-dsn>
当前仍是受控联调静态门禁:
- `FIRE_SAFETY_CHAT_AUTH_TOKEN` 由用户请求的 `xtoken` Header 携带,必须与 SuperAgent Open API Key、MCP Token 使用不同值。
- 默认要求 Chat Token 至少 32 个可打印 ASCII 字符;若已交付的旧客户端短凭证无法立即更换,只能在 Go 服务环境中显式设置 `FIRE_SAFETY_CHAT_ALLOW_LEGACY_SHORT_TOKEN=true` 做受控测试/迁移。无论开关如何,Token 都必须非空、不超过 4096 字节,并且只含 ASCII `0x21-0x7e`(无空格、控制字符或 Unicode);轮换完成后恢复 `false`,新环境不得开启。该开关同时适用于原生 Bearer 和兼容 `xtoken`,不放宽 MCP Token 的至少 32 字符门禁。
- `FIRE_SAFETY_MCP_AUTH_TOKEN` 只用于 SuperAgent -> Go `/mcp`,不应复用 Chat Token。
- Chat、SuperAgent、MCP 和 PostGIS 的完整配置校验以 `.env.example` 和对应项目文档为准。
- 浏览器会看到 `xtoken`;它不能代表最终用户身份、角色、租户或数据授权。公网真实用户入口仍需身份提供方、动态授权、限流、Secret 轮换和持久审计。
- Nginx 不读取、比较或存储 Chat Token,也不需要为 legacy 开关增加配置;请求 Header 原样转发给 Go 校验。开关启用时 Go 仅记录不含 Secret 的安全 warning,便于迁移完成后清理。
测试服务器使用 Docker Compose 的完整目录、启动、更新和回滚步骤见 [`docker-test-deployment.md`](docker-test-deployment.md)。