在某些业务场景下,业务对同步的数据有很高的安全性要求,需要确保推送的目标用户就是当前登录的用户而没有被伪造。为实现这一目的,数据同步服务提供了用户一致性验证的功能,用户可根据需要开启使用。该功能的基本原理是:
客户端在连接到服务器端时,上报用户标识(userId)和授权 token(sessionId)。userId 和 sessionId 都是用户登录系统返回的数据,当 userId 和 sessionId 变化时,需要调用相关接口才能保证长连接的建立正确。
服务器端可以调用一个由租户实现的一致性验证接口,通过这个接口,由租户来控制是否一致。数据同步服务会记录下是否一致的标识。
对于高安全要求的同步配置,租户可以开启一致性验证,数据只会推送到通过一致性验证的用户设备上。对于未开启一致性验证的同步配置,则会忽略一致性验证结果。
配置一致性验证接口
下文介绍如何配置一致性验证接口 com.antcloud.session.validate
,并对该接口进行说明。
通过 mPaaS 控制台配置完一致性验证接口后,需要关闭该 RPC 接口的 签名验证 功能,否则移动同步的一致性校验逻辑会无法正常工作。
操作入口
登录 mPaaS 控制台后,选择目标应用,进入 移动网关 > API 管理 页面,添加 API,详情参见 移动网关 > API 管理。
接口名称
添加 API 的 operationType 必须为 com.antcloud.session.validate
。请求参数配置如下:
名称 | 类型及长度要求 | 是否必须 | 示例 | 描述 |
instanceId | String | 是 | instancedemo | workspaceId_appId 的字符串。 |
userId | String | 是 | 20880939 | 用户 ID。 |
sessionId | String | 是 | kkdddd | 客户端携带的授权 token。 |
返回参数
实现一个一致性检验逻辑,需要返回数据格式为 JSON 格式,示例如下:
{
"resultCode": "OK",
"resultMsg": "Operation is done successfully",
"success": true,
"result": {
"sid": "kkdddd",
"valid":true/false
}
}
各属性含义解释:
名称 | 类型 | 示例 | 描述 |
success | boolean | true/false | 业务调用是否成功,成功返回 |
returnCode | String | ERROR | 结果码。 |
resultMsg | String | SYSTEM-ERROR | 结果信息。 |
sid | String | kkdddd | 授权 token 或者 sessionId。 |
valid | boolean | true/false | 验证结果。 |
业务结果码
结果 | 结果码 | 含义 |
true | OK | 业务成功。 |
false | OPERATION_ERROR | OPERATION 错误, 只处理 |