我想知道是否有任何方法可以限制非ios用户访问我的REST Web服务。我正在使用Java和Jersey作为我的RESTful应用程序。
本练习的目的是,由于我的webservice接受XML数据的POSTS,我想限制交换到iphone客户端,以防止出于安全原因操纵xml。
客户端是我们开发的iphone应用程序。
答案 0 :(得分:3)
(根据要求移动回答评论)
没有。
来自iPhone的TCP连接与其他任何设备都没有什么不同。您通过该连接作为“标识符”(例如,用户代理字符串)接收的任何内容都可以由能够进行TCP连接的任何其他设备生成。
来自你的评论:
是否有某种验证服务,我们可以检查设备令牌是否是iphone,即苹果设备ID?
即使有......你现在只是“默默无闻”;我需要在任何其他设备上执行的操作是发送有效的ID - 您无法告诉 正在发送它。
答案 1 :(得分:1)
严格地说,不 - 正如其他人所说的那样。
但是,因为
客户端是我们开发的iphone应用程序。
...您可以使用该应用程序发送私钥,并希望没有人有足够的动力绕过Apple现有的任何安全性并对您的应用进行逆向工程以获取该密钥。
(请注意,对于DVD加密,游戏机制造商等,这种'安全'模式已经失败了......但是如果你的应用足够保密并且你保护的数据不值得,那么对你来说可能已经足够了)。
获得该密钥后,您可以根据某种挑战强制进行REST服务中的身份验证(初始请求,带有质询的401,带有私钥的客户端签名质询和带有请求重复的回送,服务器使用公钥验证)
答案 2 :(得分:0)
如果您在代码中检查用户代理可能会有所帮助,如下所示:
if(request.getHeader("User-Agent").indexOf("iphone") != -1){
//Execute some code
}