在某些業務場景下,業務對同步的數據有很高的安全性要求,需要確保推送的目標用戶就是當前登錄的用戶而沒有被偽造。為實現這一目的,數據同步服務提供了用戶一致性驗證的功能,用戶可根據需要開啟使用。該功能的基本原理是:
客戶端在連接到服務器端時,上報用戶標識(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 錯誤, 只處理 |