Skip to main content
三条入口,一套部署可以任意组合。 本地账号零配置可用:管理员创建账号,用户用用户名密码登录。 全新部署的第一个管理员,通过控制台首次访问的引导流程创建。 OIDC 单点登录TUNEPLANE_OIDC_ISSUERTUNEPLANE_OIDC_CLIENT_IDTUNEPLANE_OIDC_CLIENT_SECRET 打开——Casdoor、Keycloak,以及任何讲 OIDC 的东西。CLI 的浏览器登录和设备码登录会走同一套流程, 不需要额外配置。 Google、GitHub 与 Hugging Face 在后台设置页配置,保存即生效、无需重启。开之前先看下面那条警告: 允许名单不填,任何一个该平台的账号都能在这里建号。 想当然之前先确认这套部署提供哪一种:

两种账号体系

默认开箱即用:管理员 tp admin user-add 建账号,用户名密码登录。全新部署第一位管理员经控制台首访引导(/api/auth/setup)创建。
角色两级:admin(治理与全量可见)与 operator(自己的项目与作业)。

Google、GitHub 与 Hugging Face 登录

设置 → 访问 → Google / GitHub / Hugging Face 登录里配置,不走环境变量,保存即生效—— 登录页上的按钮立刻出现,不需要重启。Client ID 与 Secret 都填好之前,什么也不会显示。 Google 是标准 OIDC,走 accounts.google.com 的发现文档。GitHub 不是 OIDC:它没有发现文档、 不签发 ID token,身份要从它的 REST API 取,邮箱设为私密的账号还得再读一次 /user/emails。 Hugging Face 形似 OIDC 但端点固定,登录只申请身份类 scope——与拉取受限仓库的账号绑定是两回事。 按 provider 分别注册回调地址:
允许名单留空等于放开注册。 google_allowed_domains 不填,任何一个 Google 账号都能在可从 公网访问的控制台上建号,github_allowed_orgs 同理。要么填上,要么别把控制台放到公网。 新建账号拿到的角色由 oidc_default_role 决定。
CLI 登录与设备码登录同样可以走这几个 provider,tp login 不需要额外配置。 Google One Tap 默认关闭、单独开关,因为这个提示是不请自来的。关着的时候 Google 的脚本根本 不会加载,它背后的接口也是关的。One Tap 与按钮登录最终建立的是同一个会话,访客把提示关掉不损失什么。 One Tap 是唯一由浏览器把 token 递给控制台、而不是控制台自己去取的登录路径,因此它多了两道重定向流程 不需要的校验:凭证的签名要用 Google 公布的密钥验过、且 aud 必须是本控制台自己的 Client ID;此外它 还必须带上一个由本控制台签发、且只能用一次的 nonce。没有 nonce 的话,凭证在它一小时有效期内一旦外泄, 就能被换成一个会话。

Token 体系

平台按用途签发域隔离的 token——任何一种不能冒充另一种:

安全基线

  • TUNEPLANE_WEB_JWT_SECRET 必设固定强随机串(多副本一致);
  • 生产配 TUNEPLANE_REDIS_URL:登出 / 封禁 token 即时吊销、分布式限流;
  • 集群与存储凭据只在服务端;作业侧只见预签名 URL 与 run 级 ingest token;
  • CLI 打包有敏感文件黑名单(.env*.pemid_rsa*…),密钥不会混进作业包;
  • 全部敏感操作入审计流水
TUNEPLANE_NO_AUTH=1 只用于本机联调:跳过全部鉴权、人人 admin。任何多人环境严禁开启。