Ibm mobilefirst 基于MobileFirst Platform 7.1的Windows Phone应用程序中缺少唯一的设备Id

Ibm mobilefirst 基于MobileFirst Platform 7.1的Windows Phone应用程序中缺少唯一的设备Id,ibm-mobilefirst,mobilefirst-server,Ibm Mobilefirst,Mobilefirst Server,步骤1 当我在WL.Client.createWLChallengeHandler的first请求中提交handle challenge中的答案时,headers部分包含WL\u deviceprovisiongrealm,其中还包含一个设备ID,该设备ID与使用WL.device.getID时收到的设备ID不同 在登录时,服务器保存设备id,在访问受保护的资源时,它将设备id与oAuthSecurityContext.getDeviceIdentity().getId()进行比较,以保持唯一的

步骤1
当我在
WL.Client.createWLChallengeHandler
first请求中提交handle challenge中的答案时,headers部分包含
WL\u deviceprovisiongrealm
,其中还包含一个设备ID,该设备ID与使用
WL.device.getID
时收到的设备ID不同

在登录时,服务器保存设备id,在访问受保护的资源时,它将设备id与
oAuthSecurityContext.getDeviceIdentity().getId()
进行比较,以保持唯一的登录:一个设备-一个用户

{“AppRealm”:{“parameters”:{“reqURL”:“/mobile/user/authentication”,“user.name”:“tesla”,“user.password”:“password”,“user.deviceId”:“025bdc29-959c-4b0c-8a89-cf85b0790aaf”},“headers”:{},“wl U设备配置程序”:{“ID”:{“token“+obkd/fe9Py8y9/rvgvqt3oot2sl6fzve1akaaaoohww=”,“操作系统”:“8.10.14234.0”,“模型”:“RM-1019_1003”,“环境”:“windowsphone8”},“自定义”:{}”

步骤2
当处理由于错误的登录凭据而发生故障的场景时,如果我在第二次请求中再次提交答案,
wl\u deviceProvisioningRealm
不存在,因此无法在服务器端接收设备Id

请参见以下对象:

{“AppRealm”:{“parameters”:{“reqURL”:“/mobile/user/authentication”,“user.name”:“tesla”,“user.password”:“password”,“user.deviceId”:“025bdc29-959c-4b0c-8a89-cf85b0790aaf”},“headers”:{}

为什么我只能在Windows Phone中获得不同的设备ID,而在Android和iOS中获得相同的设备ID

由IMF请求验证标头生成的ID:
+obkd/fe9Py8y9/RVgVqT3oot2sl6FzVE1AKAAOOHww=

由Wl.Device.getID生成的ID:
025bdc29-959c-4b0c-8a89-cf85b0790aaf

您是否在服务器上跟踪设备id?试图了解您面临的问题是什么?是的。登录时,在服务器上,我们从请求中获取设备id并在获取后保存到db:字符串头=请求。getHeader(授权头);JSONObject头JSON=JSONObject.parse(header);JSONObject DeviceProvisioningJSON=(JSONObject)headerJSON.get(“wl_DeviceProvisioningGRAM”);if(DeviceProvisioningJSON!=null){JSONObject idJSON=(JSONObject)DeviceProvisioningJSON.get(“ID”);JSONObject设备=(JSONObject)idJSON.get(“设备”);设备ID=(字符串)设备.get(“ID”);您是否在服务器上跟踪设备id?试图了解您面临的问题是什么?是。在登录服务器时,我们从请求中提取设备id并在提取后保存到数据库:String header=request.getHeader(AUTHORIZATION_header);JSONObject headerJSON=JSONObject.parse(header);JSONObject DeviceOnProvisioningJSON=(JSONObject)headerJSON.get(“wl_DeviceProvisioningGrialm”);if(DeviceProvisioningJSON!=null){JSONObject idJSON=(JSONObject)DeviceProvisioningJSON.get(“ID”);JSONObject设备=(JSONObject)idJSON.get(“设备”);设备ID=(字符串)设备.get(“ID”);