ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AutoGPT 后端因 JWT_JWKS_URL 为明文 HTTP 拒绝启动怎么解决?

AutoGPT 后端因 JWT_JWKS_URL 为明文 HTTP 拒绝启动怎么解决? AutoGPT 后端因 JWT_JWKS_URL 为明文 HTTP 拒绝启动怎么解决【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT自托管 AutoGPT Platform 时后端backend启动阶段会校验一个名为JWT_JWKS_URL的环境变量它指向前端内嵌 Better Auth 服务发布的 JWKS 密钥端点.../api/auth/jwks。后端的登录令牌校验完全信任这个 URL 返回的签名密钥因此当JWT_JWKS_URL是明文http://且指向非本地主机时后端会直接抛出AuthConfigError拒绝启动。典型报错是JWT_JWKS_URL fetches keys over cleartext http:// from a non-local host (...). The backend trusts whatever keys that URL returns, so an attacker in the path could substitute them and forge tokens for any user. Use https://, or set JWKS_ALLOW_INSECURE_TRANSPORTtrue if the network path is trusted.这篇文章解决的就是这个启动失败先判断你的部署拓扑属于哪种情况再按对应路径修改配置最后用日志确认后端已正常起来。校验逻辑在 auth 配置模块 中安全说明在 getting-started.md 的 Auth transport security 一节。先确认你的部署属于哪种情况报错并不是任何 http 都不行。按 config.py 的判定规则以下情况不会被拒绝localhost、127.0.0.1、::1开头的http://URL单标签容器服务名如http://frontend:3000这是 Docker 内部私有网络的服务发现主机名被视为与 loopback 同等可信任何https://URL。会被拒绝的只有一种http:// 非本地主机名带.或:的完整域名例如http://auth.example.com/api/auth/jwks。对应的测试用例见 config_test.py。据此对照你的环境单机 Docker Compose 安装后端和前端在同一台机器的同一 compose 网络里默认值就是http://frontend:3000/api/auth/jwks见 docker-compose.platform.yml 第 34 行属于单标签主机名不需要改任何东西。如果你遇到了这个报错说明你的JWT_JWKS_URL被手动改成了完整域名的http://地址按下面的方案一或方案二处理。后端与前端分部署在不同机器LAN 拆分或对外暴露走方案一改https网络路径完全可信时才走方案二放行开关。方案一把 JWT_JWKS_URL 指到 https 地址不信任网络上的首选当后端和前端分处不同机器、或对外公开访问时文档明确建议走https明文获取 JWKS 会被网络路径上的攻击者截获而替换密钥等于能给任意用户伪造令牌。操作路径见 getting-started.md给前端套上 TLS 反向代理或者用本地受信证书文档给出的示例工具是 mkcert把JWT_JWKS_URL指向https://地址。修改位置取决于你的启动方式Docker 部署改 backend/.env 中的JWT_JWKS_URL该文件由 backend/.env.default 提供默认值与说明注释make init-env只在.env不存在时创建它不会覆盖你已有的文件本地直接跑后端poetry run app/make run-backend改autogpt_platform/backend/.env后重启即可。重启后端docker compose up -d或重新poetry run app。方案二网络路径可信时用 JWKS_ALLOW_INSECURE_TRANSPORT 放行如果你确认后端到前端的链路是可信的文档举例隔离的私有 LAN可以不升级 TLS改在autogpt_platform/backend/.env中加一行JWKS_ALLOW_INSECURE_TRANSPORTtrue该开关接受1、true、yes不区分大小写见 config.py 与 config_test.py 的参数化用例。设置后后端可以正常启动但每次启动都会向日志写入一条警告大意是 JWKS 密钥正在从非本地主机经明文 http 获取、链路上任何人可替换密钥伪造令牌——这是故意留痕让取舍在日志中可见。两点边界直接来自项目文档SECURITY.md 说明这项明文检查是尽力而为的操作者提示不是安全边界它只是警告、永不阻止启动指警告路径本身保障后端到 JWKS 端点之间网络安全的责任在运维方getting-started.md 指出这是无状态 JWT/JWKS 校验的通用属性标准单机 Docker 安装不需要做任何改动。验证是否解决重启后端后查日志配置校验通过不再出现上面那段cleartext http://报错容器/进程不再退出循环若走了方案二日志中应出现文档描述的JWKS_ALLOW_INSECURE_TRANSPORT is enabled启动警告含你配置的主机名这属于预期行为而非故障按 getting-started.md 的端口说明确认服务在监听前端 UI 3000、后端 WebSocket 8001、执行 API REST 8006浏览器访问http://localhost:3000能打开界面。顺带核对URL 本身的合法性如果报错信息不是cleartext而是Invalid JWT_JWKS_URL那是另一类配置错误同样在启动时抛出必须以http://或https://开头localhost:3000/jwks、ftp://...这类写法会被拒主机部分必须是可解析的例如不闭合的 IPv6 括号http://[::1/...会在启动时报Invalid JWT_JWKS_URL而不是留到首次请求时报晦涩错误JWT_JWKS_URL是必填项未设置时报错会提示它指向平台认证服务的 JWKS 端点示例形如https://frontend-host/api/auth/jwks且不能用JWT_VERIFY_KEY替代——后者只覆盖 Supabase HS256 旧令牌的过渡期。修完配置后若仍反复重启用docker compose logs backendDocker 部署观察AuthConfigError的具体消息它会指明当前拒绝的确切原因URL 缺失、URL 非法、还是明文传输对照本文对应小节处理即可。【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表