适用于SDK版本从 2.3.0 开始以及后续版本号不带-pro 的版本
## 接入步骤
### 引入/安装js SDK
#### Web
建议直接通过 script 引入, 将放在初始化代码之前
Code (html):
#### uni-app(H5)
Code (js):
import createNEGuardian from './YiDunProtector-Web.js'
### 初始化SDK
执行SDK初始化。
Code (js):
const neg = createNEGuardian({ productId: '', timeout: 6000 }, function (code, msg) {
})
其中:
productId 是应用标识,对应易盾控制台中的产品编号,YD开头
timeout 数据上报超时时间,单位 ms,默认 6000
callback 异步流程回调。
code | msg | 说明
200 | Success | 流程内token获取成功
109 | Init Repeat | 重复初始化
199 | ProductId invalid | 产品ID错误
注:不可用的productId会导致服务端鉴权接口失败,请确保productId是正常可用的。
### 私有化初始化SDK
执行SDK初始化。
Code (js):
const neg = createNEGuardian({ productId: '', apiServer:'https://xxxxx.xxxx.xxxx', timeout: 6000 }, function (code, msg) {
})
其中:
productId 是应用标识,对应易盾控制台中的产品编号,YD开头
apiServer 私有化服务器地址,私有化的客户需要通过该接口设置服务器地址,其他客户可以忽略
timeout 数据上报超时时间,单位 ms,默认 6000
callback 异步流程回调。
code | msg | 说明
200 | Success | 流程内token获取成功
109 | Init Repeat | 重复初始化
199 | ProductId invalid | 产品ID错误
注:不可用的productId会导致服务端鉴权接口失败,请确保productId是正常可用的。
### 同步获取 Token
Code (js):
const {code, token} = neg.getToken()
code | token说明
200 | 正常模式,数据正常上报到设备指纹服务端,token 长度固定
201 | 离线模式,数据上报过程中出现异常,比如网络抖动/超时等,token 长度不固定
202 | 当前获取过程异常,此时 token 为空字符串
缓存 token 在缓存时长内二次加密后立即返回;无缓存或缓存已过期时返回降级 token,效果与短 token 一致,正常送检即可。并同时触发后台异步刷新。
注意:此时 token 可能因为初始化回调未完成而导致错误码202,为保证 token 完整获取,请保证同步获取的时候初始化回调是完成状态。
### 异步获取 Token
Code (js):
neg.getTokenAsync().then(result => {
if (result.code === 200) { // 正常情况
alert('get token:', result.token)
}
if (result.code === 201) { // 离线模式
alert('get token:', result.token)
}
})
每次实时采集数据并上报,完成后返回最新 token,属于耗时操作。
getTokenAsync 返回有两种模式:
- 正常模式,数据正常上报到设备指纹服务端,token 长度固定
- 离线模式,数据上报过程中出现异常,比如网络抖动/超时等,token 长度不固定,效果与短 token 一致,正常送检即可
### 校验结果
前端获取到 token 后,将 token 上传到业务服务器。
业务服务器根据 token 向智能风控服务器发起校验,查询结果
更多接入细节见智能风控服务端接入文档。
### 协议保护
通过数据签名与数据加密/数据解密,防止通信数据被分析,被篡改,被攻击,保护应用/游戏的通信安全。
对应的irisk_bg.wasm文件,请联系易盾获取详细说明文档。
#### 协议模块集成
获取协议文件irisk_bg.wasm与智能风控文件YiDunProtector-Web.js。
##### 协议集成代码
node环境下,执行以下内容。
Code (js):
const fs = require('fs');
// irisk_bg.wasm文件的绝对路径
const wasm_path = 'irisk_bg.wasm';
// 智能风控文件的绝对路径
const web_sdk_path = 'YiDunProtector-Web.js';
const contents = fs.readFileSync(wasm_path, null);
const base64Encoded = Buffer.from((contents)).toString('base64');
const web_sdk_param = fs.readFileSync(web_sdk_path, null);
fs.writeFileSync(web_sdk_path, web_sdk_param.toString().replace('\'AGFzbQEAAAABfhFgAABgAX8AYAF\'',
'\'' + base64Encoded + '\''));
console.log("替换成功")
#### 数据签名
验证数据来源和完整性。
Code (js):
neg.htpSign('','','')
.then(result => {
console.log(result)
})
其中:
alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number
version 算法版本。具体值请联系易盾获取详细说明文档。格式为number
data 签名的数据。格式为string
#### 数据加密
保护数据内容的机密性。
Code (js):
neg.safeCommToServer('','','')
.then(result => {
if (result.code === 200) { // 正常情况
alert('enc:', result.data)
} else { // 异常情况
alert('当前浏览器版本较低')
}
})
其中:
alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number
version 算法版本。具体值请联系易盾获取详细说明文档。格式为number
data 加密的数据。格式为string
#### 数据解密
保护数据内容的机密性。
Code (js):
neg.safeCommFromServer('','')
.then(result => {
if (result.code === 200) { // 正常情况
alert('dec:', result.data)
} else { // 异常情况
alert('当前浏览器版本较低')
}
})
其中:
alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number
data 解密的数据。格式为string