iframe 嵌入免登录

如果你希望把 Data Agent 页面嵌入到自己系统的 iframe 中,并且让用户在进入业务系统后无需再次登录 Data Agent,可以使用下面这种方式:

  • 业务侧先为当前用户申请一个 Data Agent 用户 token
  • 再把这个 token 拼接到 iframe 地址中

备注:token是一次性的,也就是说登陆成功后,token就会失效。

前置条件

接入前需要具备以下条件:

  • 业务系统已经知道“当前登录用户是谁”
  • Data Agent 中存在与该业务用户对应的账号
  • 业务方可以通过管理员 API 密钥调用 yiaskAuth:issueUserToken

如果你还没有签发用户 JWT 的方法,可以先看JWT Token 生成

基本流程

  1. 用户先登录你的业务系统。
  2. 业务前端或业务后端确认当前用户身份。
  3. 调用 Data Agent 的 POST /api/yiaskAuth:issueUserToken,为当前用户签发 Data Agent 用户 token。
  4. 将返回的 token 拼接到 iframe 的 src 中。
  5. 浏览器加载 iframe,对应用户即自动进入 Data Agent 页面。

iframe 地址示例

<iframe
  src="https://data-agent.example.internal/admin/chat?token=<USER_JWT_TOKEN>&agent=<AGENT_NAME>&space=<SPACE_NAME>"
  width="100%"
  height="800"
  frameborder="0"
></iframe>

其中:

  • https://data-agent.example.internal 是你的 Data Agent 服务地址
  • /admin/chat 是你希望打开的 Data Agent 页面路径
  • 必需参数 token=<USER_JWT_TOKEN> 是通过 yiaskAuth:issueUserToken 签发得到的当前用户 JWT
  • 可选参数 agent=<AGENT_NAME> 是你希望打开的 AI 员工用户名字段
  • 可选参数 space=<SPACE_NAME> 是你希望打开空间的空间标识(前提是用户在该空间有权限) alt text

流程示意

浏览器
  -> 业务系统:获取当前登录用户
  -> Data Agent:调用 issueUserToken
  -> 浏览器:拿到用户 token
  -> iframe src = https://data-agent/.../admin/chat?token=...
  -> Data Agent:识别 token,完成登录

安全建议

接入时至少遵守下面几点:

  1. 不要把管理员 API 密钥直接放到前端。
  2. 建议由你自己的业务后端调用 issueUserToken,再把用户 token 返回给前端。
  3. 生产环境务必启用 HTTPS。
  4. 控制 token 有效期,不要签发过长生命周期的 token。

实施建议

  1. 不要手工生成 JWT,请统一使用 yiaskAuth:issueUserToken
  2. 不要把管理员 API 密钥暴露给浏览器。
  3. 生产环境请使用 HTTPS。

总结

iframe 免登录接入方式很直接:

  • 先为当前用户签发 Data Agent 用户 token
  • 再把 token 拼接到 iframe src
  • 浏览器首次访问 iframe 时,Data Agent 会识别 token 并完成登录