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