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