跳转到内容

Client Portal Gateway 限制

Client Portal Gateway 不是一个可以随便部署给任意远程浏览器访问的公共 API 服务。它的设计目标是让同一台电脑上的程序通过 Gateway 访问 Client Portal API。

限制中文解释
同机登录用户必须在运行 Gateway 的同一台机器上通过浏览器登录认证。
同机请求API endpoint 调用应从 Gateway 已认证的同一台机器发出。
不支持部分路径/gw/api/oauth/oauth2 开头的 endpoint 不支持通过 Client Portal Gateway 使用。
不能自动登录个人账户没有官方机制自动化 Gateway brokerage session 登录。
至少每日重新认证Gateway 会话至少每天午夜后需要重新认证一次。

为什么不建议直接放到公网服务器

Section titled “为什么不建议直接放到公网服务器”

Gateway 默认是给同一台电脑使用的认证桥。把它直接暴露到公网会带来几个问题:

问题风险
认证页面暴露外部网络能访问登录入口,安全风险显著增加。
自签名证书浏览器和 HTTP 客户端会遇到证书警告或证书校验失败。
session 绑定登录、请求、会话和浏览器环境之间有同机假设。
重新认证每日重新认证和 2FA 仍需要人工处理。
支持边界出现异常时,IBKR 支持可能要求回到官方支持的同机使用方式排查。

服务器并非完全不能运行 Gateway,但要把它当作“有图形登录和人工认证要求的本地进程”来管理,而不是普通无状态 REST 服务。

更稳妥的分工是:

场景建议
桌面学习和调试Windows 或 macOS 电脑运行 Gateway,浏览器登录。
服务器模拟账户调试服务器需要图形环境、浏览器、人工 2FA、端口保护和日志告警。
面向用户的公开产品不直接让用户访问你的 Gateway;应设计自己的后端和权限层。
长期生产交易系统优先评估 TWS API / IB Gateway、官方 OAuth Web API 或机构级接入方式。

Client Portal API brokerage session 如果一段时间没有请求,会超时。官方文档建议定期调用 /tickle 保活,常见做法是大约每分钟调用一次。即使有保活,也不能绕过每日重新认证和 IBKR 的登录安全要求。

  1. 确认 Gateway 终端窗口仍在运行。
  2. 浏览器打开 https://localhost:5000,确认不是登录页或证书阻断页。
  3. 调用认证状态 endpoint,确认 session 已认证。
  4. 检查是否使用了 Gateway 不支持的 /gw/api/oauth/oauth2 路径。
  5. 检查同一用户名是否已经在 TWS、IBKR Mobile 或 Client Portal 中占用了 brokerage session。