根因:Kong 日志显示 voice WebSocket 连接被 JWT 插件返回 401,
因为 WebSocket RFC 6455 不支持自定义 header,Flutter 的
WebSocketChannel.connect 无法携带 Authorization header。
修复策略(业界标准做法):
1. Kong: 将 voice-service 的 JWT 从 service 级别改为 route
级别,仅在 voice-api 和 twilio-webhook 路由启用 JWT,
voice-ws 路由免除(session 创建已通过 JWT 验证,
session_id 本身作为认证凭据)
2. 后端: session_router 返回的 websocket_url 改为
/ws/voice/{session_id}(匹配 Kong voice-ws 路由路径)
3. FastAPI: 在 app 级别增加 /ws/voice/{session_id} 顶级
WebSocket 路由,委托给 session_router 的 handler
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| docker-entrypoint.sh | ||
| kong.yml | ||