跳转至

自有平台接入一键登录

代理商可将自有平台的用户同步到云防护平台,并在用户单击链接后免密进入用户中心。

适用场景

  • 您已有独立的用户注册与登录体系,希望用户从自有平台一键进入云防护用户中心。
  • 需要把自有平台的账号、密码与云防护平台保持一致。

不适用于仅在云防护用户中心直接注册、不经过代理商自有平台的场景。

核心概念

  • agent-code / agent-api-key:平台分配给代理商的身份标识与密钥。同步账号时必须放在请求头。获取方式见下文「获取 agent-code 与 agent-api-key」。
  • 平台 RSA 公钥:调用同步账号、修改密码、获取一键登录码时,用它对密码明文做 PKCS#1 加密,密文为 URL-Safe Base64。
  • 一键登录 code:校验账号密码成功后下发的短期凭证,有效期 500 秒。浏览器打开用户中心过渡页时携带该 code。
  • 用户中心域名:该代理商对应的控制台域名,不清楚时请联系我们。

调用平台接口时使用平台提供的 RSA 公钥。用户在本平台改密后,平台回推新密码时使用您在个人中心配置的另一把公钥,详见 接收密码变更通知

前提条件

  • 已获取 agent-codeagent-api-key、平台 RSA 公钥、用户中心域名。
  • 自有平台已能在用户注册、改密时拿到同一套账号与明文密码。
  • 调用域名以平台提供的登录域名为准,下文写为 {登录域名}

获取 agent-code 与 agent-api-key

开通代理商时,平台会分配 agent-code,并为该代理商账号生成 agent-api-keyagent-code 与用户中心域名绑定,之后调用同步账号等接口时须原样放入请求头。

若您尚未拿到这两项,请联系平台对接人员获取。请妥善保管 agent-api-key,不要写入前端页面或公开仓库。

接入流程

flowchart LR
  syncAccount[同步账号] --> updatePassword[同步改密]
  updatePassword --> getCode[获取登录码]
  getCode --> jumpPage[浏览器跳转]
  jumpPage --> consoleHome[进入用户中心]

用户在本平台改密后的反向同步见 接收密码变更通知

步骤一:同步账号

用户在自有平台注册成功后,立即调用 代理商同步账号到云平台

  1. 使用平台 RSA 公钥将明文密码加密为 PKCS#1 密文。
  2. 发送 POST /prod-api/auth/token/syncAccount
  3. 请求头携带 agent-codeagent-api-key
  4. 请求体携带 usernamepassword(密文)、agentCode,以及 emailphone 中至少一项。

预期结果:响应 code200msg注册成功

注意:请传入真实有效的手机号,否则短信等能力可能不可用。同一 agent-code 下,用户名、邮箱、手机号不能与已有账号重复。

步骤二:同步密码变更

用户在自有平台修改密码后,调用 修改密码,保证两侧密码一致。一键登录依赖这套密码校验。

  1. 用平台 RSA 公钥分别加密旧密码和新密码。
  2. 发送 POST /prod-api/auth/token/updatePassword
  3. username 填写该用户的**邮箱或手机号**,不要只填展示用用户名。
  4. 请求体携带 agentCodeoldPasswordnewPassword

预期结果:响应 code200msg更新成功

步骤三:获取一键登录码并跳转

用户在自有平台单击进入控制台或同类入口时:

  1. 用平台 RSA 公钥加密当前明文密码。
  2. 调用 获取一键登录码POST /prod-api/auth/token/getQuickLoginCode
  3. 请求体携带 usernamepassword(密文)、agentCode
  4. 从响应 data 取出 code,在 500 秒 内让浏览器打开:

https://{用户中心域名}/cloud/quickLogin?code={code}

需要登录后落到指定功能页时,再追加 Query path。过渡页校验 code 成功后,会把 path 交给用户中心前端路由($router.push);不传或为空则进入 /index

path 是用户中心内部路由,不要**带 /cloud 前缀,也**不要**写成完整 URL。取值须以 / 开头。若目标页还带业务参数(如套餐号、域名 ID),把 ? 与后续 Query 一并写进 path,并对**整个 pathencodeURIComponent,否则 ?& 会被浏览器拆成过渡页自己的参数。

完整跳转地址:

https://{用户中心域名}/cloud/quickLogin?code={code}&path={encodeURIComponent(path)}

示例:

场景 path 取值 登录后进入
控制台首页 不传 path /index
域名列表 /cdn/domainsList CDN 域名列表
域名详情 /cdn/domains/info?domainId=657&domain=example.com 指定域名的配置页
四层转发详情 /layer4/info?oid=202405232795134123456 指定四层套餐详情
WAF 规则 /waf/package/edit?oid=202405232795134123456&wafId=1001 指定 WAF 套餐编辑页

注意:请使用浏览器重定向或新开窗口打开上述页面,不要由服务端直接调用 GET /prod-api/auth/quickLogin。过渡页会写入 Cookie 与本地 Token;服务端代调拿不到登录态。path 必须是当前用户中心已有且该账号有权限访问的路由,错误路径会落到用户中心的空页或 404。

调用方式示例:

// 进入控制台首页
window.open(
  "https://{用户中心域名}/cloud/quickLogin?code=" + encodeURIComponent(code),
);

path 跳到域名详情:

var path = "/cdn/domains/info?domainId=657&domain=example.com";
window.open(
  "https://{用户中心域名}/cloud/quickLogin?code=" +
    encodeURIComponent(code) +
    "&path=" +
    encodeURIComponent(path),
);

当前页直接跳转:

window.location.href =
  "https://{用户中心域名}/cloud/quickLogin?code=" +
  encodeURIComponent(code) +
  "&path=" +
  encodeURIComponent("/layer4/info?oid=202405232795134123456");

验证结果

  • 同步账号后,可在代理商控制台的客户列表中看到该用户。
  • 打开过渡页后显示验证成功并自动跳转,随后进入用户中心。
  • 用户中心右上角展示的账号与同步时的邮箱或手机号一致。

常见问题

提示解析失败,请确认 RSA 公钥是否正确

密码未按 PKCS#1 加密,或使用了错误的公钥。请使用平台提供的公钥,密文使用 URL-Safe Base64。不要使用您在个人中心配置的那把公钥。

提示登录用户不存在或密码错误

请确认已先调用 syncAccount,且 getQuickLoginCodeupdatePasswordusername 为邮箱或手机号,agentCode 与同步时一致,密码与同步或最近一次改密一致。

打开过渡页提示登录验证不通过

code 已超过 500 秒。请重新调用 getQuickLoginCode 并立即跳转。

跳转后停留在错误站点或无法登录

请确认使用的是该代理商的用户中心域名,路径包含 /cloud/quickLogin。不要省略 /cloud 前缀,除非平台另行告知部署路径。

相关文档