使用MFP在Cordova上载和下载资源

时间:2016-11-28 14:38:16

标签: cordova ibm-mobilefirst

我们有一个Cordova APP,可以使用自定义安全性调用API。

现在,我们正在迁移到IBM MFP 8.0

我已按照https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/authentication-and-security/protecting-external-resources/中提供的步骤保护外部资源,并https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/application-development/resource-request/javascript/通过Cordova致电。

该应用程序使用插件cordova-plugin-file-transfer进行两件事:

  • 将图像从受保护的REST端点下载到文件系统并在HTML中使用(例如,用户个人资料照片)
  • 将图像上传到受保护的REST端点(例如,从图库中上传用户个人资料照片)

这很有效,因为该插件可以发送自定义标题。

如何使用受MFP保护的端点实现相同的功能?

更新

正在运行的Rest API,现在它已被MFP使用机密客户端作为外部资源进行保护。

API使用Spring Multipart进行上传,并生成byte [] PNG供下载:

@RequestMapping(value = PROFILE_UPDATE_USER_PROFILE_PHOTO, 
        method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) 
@Override 
public ResponseEntity<DataOutput<APIError[], ProfilePhotoOutput>> updateUserProfilePhoto( 
                MultipartFile file) { 

        return profileController.updateUserProfilePhoto(file); 
}         

@RequestMapping(value = PROFILE_GET_USER_PROFILE_PHOTO, 
        method = RequestMethod.GET, produces = {MediaType.IMAGE_GIF_VALUE, MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE}) 
@ResponseBody 
@Override 
public ResponseEntity<byte[]> getUserProfilePhoto() { 
        return profileController.getUserProfilePhoto(); 
}

1 个答案:

答案 0 :(得分:0)

我建议在这种情况下通过JavaAdapter公开您对Binary内容的访问权限(例如:照片),这样您就可以从MFP服务器提交和返回的有效负载类型中获得更多自由。

一种方法是将图片作为Base64处理并将其发送到JSON中。可以使用相同的过程来读取照片。

@PUT
@Path("/addPhoto")
@Produces("application/json")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED})
public String receivePhoto(@FormParam(value="photoId") String photoId, @FormParam(value="data") String photoData){
//Process your photo, convert from base64 to the format of choice. 
}

这里的关键是使用注释@Produces和@Consumes来探索处理二进制数据的最佳方法。如果它是更紧凑的格式(如png / jpeg raw)或Base64可以在JSON响应中使用。

https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/adapters/java-adapters/java-http-adapter/

根据二进制格式的负载量,有必要检查是否使用&#34;机密客户端&#34;或者&#34;保护外部资源&#34;不会更适合你的用例。与在MFP中创建适配器不同,您可以使用MobileFirst来帮助进行安全设置,但第三方层可以处理二进制数据操作。

机密客户:https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/authentication-and-security/confidential-clients/

protect-external-resources:https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/authentication-and-security/protecting-external-resources/

简而言之:

  • 使用编码为Base64的二进制文件
  • 探索JavaAdapter以处理自定义有效负载
  • 通过探索&#34;机密客户&#34;第三方保护访问权限。或者&#34;保护外部资源&#34;备择方案。

希望这些信息有所帮助,