1

通过仅允许来自特定应用程序的 iOS 或 Android 设备的请求来保护 REST 服务提供程序(假设在 google appengine 上运行的 java servlet)的最佳解决方案是什么?

假设我有一个在 google appengine 上运行的 servlet,它进行一些处理并使用一些 JSON 数据响应 GET 请求。我想限制对我在 Android 和 iOS 上运行的应用程序的访问。

我目前的解决方案是:

  1. if(tokenValue == request.getHeader(tokenKey))在 appengine servlet 上使用。在 response.addHeader(tokenKey, tokenValue)移动应用程序的代码上。所以基本上只有我的应用程序会知道令牌密钥。
  2. 对上述解决方案使用HTTP(s) ,appengine 支持这个
  3. 使用oAuth - 但我需要让用户从应用程序登录到某些 oAuth 提供程序,这会使应用程序复杂化

建议其他有用的方法来解决这个问题。假设这个 servlet 只服务于 GET 请求并且可能使用 Restlet 或 Jackson

4

2 回答 2

0

使用客户端 SSL 证书怎么样?这个我没试过,但我正在考虑。这是描述该方法的页面,带有一些示例代码: http: //blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html

于 2011-06-27T19:50:47.823 回答
0

如果安全性对您很重要,那么只有 3 个是合适的解决方案。这是因为使用该应用程序的任何人都可以拦截流量,并针对您的 Web 服务重放这些值。SSL 提供了一些保护,但一个好的攻击者可以在他们控制设备的情况下弄清楚如何捕获数据。使用 OAuth,攻击者造成的损害仅限于单个用户(只要他们不是应用程序管理员)。

于 2011-05-28T21:09:42.203 回答