我们在Bluemix应用程序(为iOS客户端提供服务)上使用IBM推送通知服务和Mobile-App-Security。
为了发送推送通知,我们的服务器会向https://mobile.ng.bluemix.net/push/v1/apps/{application-id}/messages
在Ibm-Application-Secret标题中使用应用程序密钥(遵循说明here)。
要在我们的应用程序内初始化Mobile-App-Security SDK,您需要application-id和application-secret - 这意味着应用程序本身必须包含这些值(作为常量参数或从服务器下载)。如果恶意用户使用简单的逆向工程获取这些值,他就能发送相同的POST请求,即向其他客户端发送推送通知,对吗?
不应该有两个申请机密吗?应用程序的一个秘密(使得很难伪造注册 - 即需要逆向工程)和一个用于服务器(允许发送通知,不应该存储在客户端)。
是否可以在没有应用程序密钥的情况下初始化Mobile-App-Security iOS SDK?
答案 0 :(得分:0)
我理解你的担忧。解决您的所有问题:
- 您必须在客户端具有应用程序密钥才能通过MAS进行身份验证并使用推送服务(Push依赖于MAS身份验证)
- 我们建议您实施自己的安全形式,以防止恶意用户轻松获取App Secret。例如,加密存储应用程序机密的文件,或仅加密应用程序机密。
如果您正在寻找更强大的内置安全级别,我建议您使用较新的MobileFirst Services Starter,支持Push和高级移动访问服务(AMA),该服务目前仅适用于iOS 8
答案 1 :(得分:-1)
移动设备在Bluemix上运行的服务器上注册其唯一的设备ID。如果您不信任某个设备,则可以向该设备发送带有密钥的推送通知并将其请求回来。如果您获得此密钥,该设备也已成功在Google或Apple注册。