限制/保护特定移动应用程序使用的 Google Appengine servlet(REST 服务提供商)
通过仅允许来自特定应用程序的 iOS 或 Android 设备的请求来保护 REST 服务提供程序(假设在 google appengine 上运行的 java servlet)的最佳解决方案是什么?
假设我有一个在 google appengine 上运行的 servlet,它执行一些处理并使用一些 JSON 数据响应 GET 请求。我想限制对在 Android 和 iOS 上运行的应用程序的访问。
我当前的解决方案是:
- 使用
if(tokenValue == request.getHeader(tokenKey))
上 应用程序引擎 servlet。和response.addHeader(tokenKey, tokenValue)
在移动应用程序上 代码。所以基本上只有我的应用程序会 知道令牌密钥。 - 对于上述解决方案,appengine,请使用 HTTP(s)支持此
- 使用 oAuth - 但我需要让用户签名-on 到某个 oAuth 提供商应用程序,这使应用程序变得复杂
建议其他有用的方法来解决这个问题。假设此 servlet 仅服务 GET 请求,并且可能使用 Restlet 或 Jackson
What is the best solution to secure a REST service provider (assume a java servlet running on google appengine) by allowing requests only from iOS or Android device from a specific app?
Assume I have a servlet running on google appengine that does some processing and responds to a GET request with some JSON data. And I want to restrict this access to my app that runs on Android and iOS.
My current solutions are:
- Use
if(tokenValue ==
on the
request.getHeader(tokenKey))
appengine servlet. Andresponse.addHeader(tokenKey,
on the mobile apps'
tokenValue)
code. So basically only my app would
know the token key. - Use HTTP(s) for the above solution, appengine supports this
- Use oAuth - but I need to have the user sign-on to some oAuth provider from the app, which complicates the app
Suggest other useful approaches to tackle this problem. Assume this servlet only serves GET requests and maybe use Restlet or Jackson
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果安全性对您来说很重要,那么只有 3 个才是合适的解决方案。这是因为使用该应用程序的任何人都可以拦截流量并仅针对您的 Web 服务重放这些值。 SSL 提供了一些保护,但优秀的攻击者可以在控制设备的情况下找出如何捕获数据的方法。使用 OAuth,攻击者造成的损害仅限于单个用户(只要他们不是应用程序管理员)。
Only 3 would be an appropriate solution if security is important to you. This is because anyone using the application can intercept the traffic and just replay the values against your web service. SSL offers some protection but a good attacker can work out how to capture data if they control the device. With OAuth the damage done by an attacker is limited to a single user (as long as they are not an app admin).
使用客户端 SSL 证书怎么样?我还没有尝试过这个,但我正在考虑。这是描述该方法的页面,其中包含一些示例代码:
http://blog.crazybob.org/2010/02/android -trusting-ssl-certificates.html
How about using a client SSL certificate? I haven't tried this, but I'm considering it. Here's a page that describes the approach, with some sample code:
http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html