自有平台接入一键登录¶
代理商可将自有平台的用户同步到云防护平台,并在用户单击链接后免密进入用户中心。
适用场景¶
- 您已有独立的用户注册与登录体系,希望用户从自有平台一键进入云防护用户中心。
- 需要把自有平台的账号、密码与云防护平台保持一致。
不适用于仅在云防护用户中心直接注册、不经过代理商自有平台的场景。
核心概念¶
- agent-code / agent-api-key:平台分配给代理商的身份标识与密钥。同步账号时必须放在请求头。获取方式见下文「获取 agent-code 与 agent-api-key」。
- 平台 RSA 公钥:调用同步账号、修改密码、获取一键登录码时,用它对密码明文做 PKCS#1 加密,密文为 URL-Safe Base64。
- 一键登录 code:校验账号密码成功后下发的短期凭证,有效期 500 秒。浏览器打开用户中心过渡页时携带该 code。
- 用户中心域名:该代理商对应的控制台域名,不清楚时请联系我们。
调用平台接口时使用平台提供的 RSA 公钥。用户在本平台改密后,平台回推新密码时使用您在个人中心配置的另一把公钥,详见 接收密码变更通知。
前提条件¶
- 已获取
agent-code、agent-api-key、平台 RSA 公钥、用户中心域名。 - 自有平台已能在用户注册、改密时拿到同一套账号与明文密码。
- 调用域名以平台提供的登录域名为准,下文写为
{登录域名}。
获取 agent-code 与 agent-api-key¶
开通代理商时,平台会分配 agent-code,并为该代理商账号生成 agent-api-key。agent-code 与用户中心域名绑定,之后调用同步账号等接口时须原样放入请求头。
若您尚未拿到这两项,请联系平台对接人员获取。请妥善保管 agent-api-key,不要写入前端页面或公开仓库。
接入流程¶
flowchart LR
syncAccount[同步账号] --> updatePassword[同步改密]
updatePassword --> getCode[获取登录码]
getCode --> jumpPage[浏览器跳转]
jumpPage --> consoleHome[进入用户中心]
用户在本平台改密后的反向同步见 接收密码变更通知。
步骤一:同步账号¶
用户在自有平台注册成功后,立即调用 代理商同步账号到云平台。
- 使用平台 RSA 公钥将明文密码加密为 PKCS#1 密文。
- 发送
POST /prod-api/auth/token/syncAccount。 - 请求头携带
agent-code、agent-api-key。 - 请求体携带
username、password(密文)、agentCode,以及email、phone中至少一项。
预期结果:响应 code 为 200,msg 为 注册成功。
注意:请传入真实有效的手机号,否则短信等能力可能不可用。同一
agent-code下,用户名、邮箱、手机号不能与已有账号重复。
步骤二:同步密码变更¶
用户在自有平台修改密码后,调用 修改密码,保证两侧密码一致。一键登录依赖这套密码校验。
- 用平台 RSA 公钥分别加密旧密码和新密码。
- 发送
POST /prod-api/auth/token/updatePassword。 username填写该用户的**邮箱或手机号**,不要只填展示用用户名。- 请求体携带
agentCode、oldPassword、newPassword。
预期结果:响应 code 为 200,msg 为 更新成功。
步骤三:获取一键登录码并跳转¶
用户在自有平台单击进入控制台或同类入口时:
- 用平台 RSA 公钥加密当前明文密码。
- 调用 获取一键登录码:
POST /prod-api/auth/token/getQuickLoginCode。 - 请求体携带
username、password(密文)、agentCode。 - 从响应
data取出 code,在 500 秒 内让浏览器打开:
https://{用户中心域名}/cloud/quickLogin?code={code}
需要登录后落到指定功能页时,再追加 Query path。过渡页校验 code 成功后,会把 path 交给用户中心前端路由($router.push);不传或为空则进入 /index。
path 是用户中心内部路由,不要**带 /cloud 前缀,也**不要**写成完整 URL。取值须以 / 开头。若目标页还带业务参数(如套餐号、域名 ID),把 ? 与后续 Query 一并写进 path,并对**整个 path 做 encodeURIComponent,否则 ?、& 会被浏览器拆成过渡页自己的参数。
完整跳转地址:
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。
调用方式示例:
带 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,且 getQuickLoginCode、updatePassword 的 username 为邮箱或手机号,agentCode 与同步时一致,密码与同步或最近一次改密一致。
打开过渡页提示登录验证不通过¶
code 已超过 500 秒。请重新调用 getQuickLoginCode 并立即跳转。
跳转后停留在错误站点或无法登录¶
请确认使用的是该代理商的用户中心域名,路径包含 /cloud/quickLogin。不要省略 /cloud 前缀,除非平台另行告知部署路径。