仅允许Iphone访问REST Web服务

时间:2013-06-28 16:22:17

标签: java rest

我想知道是否有任何方法可以限制非ios用户访问我的REST Web服务。我正在使用Java和Jersey作为我的RESTful应用程序。

本练习的目的是,由于我的webservice接受XML数据的POSTS,我想限制交换到iphone客户端,以防止出于安全原因操纵xml。

客户端是我们开发的iphone应用程序。

3 个答案:

答案 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
   }