文档

身份与登录

AgentHub 使用 TokenDance ID 作为身份权威。AgentHub Home 公开站点的登录按钮应把用户带到 TokenDance ID,而不是自己实现一套本地密码登录卡片。

当前边界

线上官网登录只是低风险的 TokenDance ID 入口,用于站点个性化和未来的 Web handoff。它并不意味着 Hub API 授权、Edge target 访问、飞书/Lark action 或 runtime 执行权限已经通用可用。

登录流程

官网登录流程应保持简单:

  1. 用户在 AgentHub Home 点击 登录
  2. AgentHub 创建带 PKCE 的浏览器端 OIDC authorization request。
  3. 浏览器跳转到 TokenDance ID。
  4. TokenDance ID 处理密码、第三方 provider、账号绑定和 session policy。
  5. TokenDance ID 跳回 AgentHub callback。
  6. AgentHub 只保存静态站点 UI 需要的低风险用户 profile 和过期时间。
  7. 用户回到发起登录的本地化页面。

AgentHub Home 不能把自己表现成第二个身份系统。如果登录页需要视觉状态,应是跳转到 TokenDance ID 的 redirect 或 transition 状态,而不是独立的凭据表单。

职责拆分

范围Owner公开规则
密码登录TokenDance ID不在 AgentHub Home 重新实现
GitHub/Google/Feishu provider 登录TokenDance IDAgentHub 只消费归一化 OIDC claim
公开站点个性化AgentHub Home只做低风险 UI 状态
产品 sessionHub Server项目、团队、设备、路由和审计需要它
本地执行权限Edge Server + Desktopworkspace allowlist 和 approval policy 仍然生效
飞书/Lark 账号绑定TokenDance ID + AgentHub Integration Gateway飞书是协作入口,不是产品登录
TokenDance API keyTokenDance Gateway模型 API 凭据,不是登录凭据

浏览器状态

AgentHub Home 是静态站点,所以浏览器状态必须收窄:

  • 只保存 UI 个性化需要的用户显示信息和过期时间。
  • returnTo 只允许同站点、本地化路径。
  • 不持久化 access token、ID token、refresh token、authorization code 或 provider response。
  • 静态站点不请求 offline_access
  • logout 时先清理本地网站状态,再跳转 TokenDance ID logout。

如果未来 Web 工作台需要高信任产品访问,应使用 Hub 拥有的 session 和服务端校验,而不是把静态站点个性化状态当成授权。

授权边界

认证只回答"这个用户是谁"。AgentHub 授权仍要单独回答一组产品动作问题:

动作需要哪个 owner 判断
打开项目Hub 产品授权
把任务路由到 Edge targetHub 设备/项目授权
读取或下载 run artifactHub 权限与审计
启动本地执行Edge workspace policy
写文件或执行 shellEdge policy 加用户审批
执行飞书/Lark 卡片动作Integration Gateway 校验、TokenDance ID 绑定和 Hub 授权

成功登录官网不等于可以读取本地文件、启动 runtime、批准工具调用、管理 TokenDance Gateway key 或执行飞书/Lark action。

Callback 与返回路径

Callback 路由应该可审计、无意外:

  • 只接受预期的 OIDC callback 参数。
  • 校验跳转前创建的浏览器 nonce 或 state。
  • 通过配置的 TokenDance ID issuer 交换 authorization code。
  • 拒绝站外或格式异常的 return path。
  • 返回 /en/zh 或有效的同站点本地化路径。
  • OIDC state、issuer、client id 或 callback 配置错误时,展示清晰的失败状态。

公开文档可以描述 callback 形状和预期跳转行为;不能公开 client secret、admin key、原始 callback payload、refresh token 或私有错误响应。

UI 要求

登录入口应遵守产品站设计系统:

  • 主登录按钮放在顶部导航右侧。
  • 保留语言和主题控制,但不要让它们抢占登录按钮的层级。
  • focus 和 active state 使用 TokenDance Blue。
  • 不做独立的黑底登录页。
  • 过渡状态要紧凑、清晰。
  • 中英文文案保持同一套 i18n dictionary 结构。

同时测试 homepage mock 和登录状态时,主题和语言切换不能让 mock UI、导航文案或登录状态不同步。

故障分流

现象第一动作
登录后回到错误语言检查 returnTo 校验和本地化路由生成
登录看似成功但 UI 仍匿名检查 sessionStorage 是否可用,以及 profile 是否过期
部署后 callback 失败核对公开 callback URL、issuer、client id 和生成的静态 callback route
飞书用户不能执行 AgentHub action检查 TokenDance ID 绑定,而不是官网登录状态
登录官网后 Hub API 仍拒绝检查 Hub session 发行和产品授权,而不是静态站点 profile
Gateway key 页面要求 AgentHub 登录修正产品边界文案;TokenDance API key 属于 Gateway

文档规则

修改登录或身份行为时,同步更新这些入口:

  • 本地化首页登录文案和导航顺序。
  • 本页的身份与登录文档。
  • 如果边界或故障路径变化,同步安全边界和排障指南。
  • llms.txt、sitemap、搜索索引、README 路由清单和更新日志。
  • 如果 callback、token storage、第三方 provider 归属或 relying-party 规则变化,同步 TokenDance root identity governance 文档。

相关页面