我们有一个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进行两件事:
这很有效,因为该插件可以发送自定义标题。
如何使用受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();
}
答案 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响应中使用。
根据二进制格式的负载量,有必要检查是否使用&#34;机密客户端&#34;或者&#34;保护外部资源&#34;不会更适合你的用例。与在MFP中创建适配器不同,您可以使用MobileFirst来帮助进行安全设置,但第三方层可以处理二进制数据操作。
protect-external-resources:https://mobilefirstplatform.ibmcloud.com/tutorials/en/foundation/8.0/authentication-and-security/protecting-external-resources/
简而言之:
希望这些信息有所帮助,