INTEGRATION GUIDE
把一次验证接入你的站点
每个业务站点拥有独立的 siteKey 和绑定域名。服务端结合会话状态、一次性凭证与风险策略保护关键流程;成功响应只返回短时 verification ticket。
01 / QUICK START
快速开始
在管理后台使用管理员 token 创建站点,记录返回的 siteKey。演示环境默认站点也可通过 GET /api/sites 查看。
GET /api/sites
{
"ok": true,
"sites": [{ "id": "portal", "name": "企业门户", "siteKey": "sl_portal_8f1a4c2d" }],
"challengeType": "shieldlab_checkbox"
}
Authorization: Bearer <admin token>。02 / SDK RENDER
只配置 siteKey,直接渲染 TRUSTTURN UI
对接方不需要复制验证码结构或维护安全逻辑。加载 TRUSTTURN SDK 后传入自己的站点 key,组件界面、环境校验、challenge、verify 和过期刷新均由服务统一完成。
<div id="trustturn-box"></div>
<script src="https://cdn.trustturn.cc/a4c9d270.js"></script>
<script>
TrustTurn.render('#trustturn-box', {
siteKey: 'sl_portal_8f1a4c2d',
onSuccess(ticket) {
console.log(ticket.verificationTicket);
}
});
</script>
successDisplayMs(0 至 5000 毫秒)。03 / SESSION
创建会话
首次访问会设置 HttpOnly sl_session Cookie,并建立本次验证会话。后续请求需要携带同一 Cookie、User-Agent 和出口地址。
const bootstrap = await fetch('https://api.trustturn.cc/api/session/bootstrap', {
credentials: 'include'
}).then(r => r.json());
// SDK 使用 bootstrap.sessionCrypto 建立本次验证会话
04 / CHALLENGE
签发一次性 challenge
前端在用户明确同意后采集最小必要信号,生成受保护的 wlzData 并提交 challenge。对接方只需要透传 SDK 生成的载荷。
await fetch('https://api.trustturn.cc/api/challenge', {
method: 'POST', credentials: 'include',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ wlzData })
});
响应中的 wsToken 是短时、绑定会话和站点的一次性凭证,只能提交一次;同时返回 challenge 标识和完整性字段,这些字段都必须原样带回 verify。
05 / VERIFY
提交 verify 并取得 ticket
验证范围按当前站点的 siteId 生成。前端提交受保护的 verify 载荷,服务端会检查站点、域名、会话和凭证是否一致。
{
"securePayload": "<SDK 生成的受保护载荷>"
}
// 成功响应
{ "success": true, "site_id": "portal",
"verification_ticket": "短时 ticket", "message": "验证成功" }
06 / LOGIN
把 ticket 交给业务登录
{
"username": "demo",
"password": "demo123",
"verification_ticket": "<ticket>",
"site_key": "<siteKey>"
}
ticket 默认 60 秒有效且只能消费一次;登录接口会再次校验当前会话与 siteKey。
07 / OPERATIONS
错误码与运行边界
challenge_binding:验证凭证与当前站点不一致。replayed_token:一次性凭证已使用。expired_token:验证超时,组件会自动重新初始化。site_domain_not_allowed:当前域名未绑定到该站点。site_authorization_expired:站点业务授权已到期。site_authorization_frozen:站点业务授权已冻结。site_authorization_revoked:站点业务授权已吊销。session_binding:当前会话环境发生变化。environment_risk:当前访问环境未通过风险校验。invalid_verification:登录凭证无效、过期或已消费。
管理员可以在后台配置站点域名、授权范围和风险策略,并查看验证事件。正式部署前请配置管理员强认证、访问审计、数据保留周期与适用的告知机制。