如何为Android App使用的Web API服务实现身份验证?

时间:2013-09-16 07:24:13

标签: android authentication asp.net-web-api

我们将构建一个将由Android应用程序使用的Web API应用程序。我想保护这个面向公众的API,以便只有Android应用才能使用API​​。

我们不希望使用HTTPS,因为传输的数据确实不敏感。也没有涉及登录,所以只要我们确保合法的应用程序正在拨打电话我们就可以了。

我在考虑在应用程序和api之间共享一种秘密数据,但我们的Android开发人员说,我们在应用程序中放置的任何数据都可以被恶意攻击者检索。另外,通过HTTP传输该数据并不安全。

我想知道是否有人可以帮助我找到一个我们最好不会使用HTTPS的解决方案?

2 个答案:

答案 0 :(得分:1)

您是正确的,有可能有人可以从设备上的应用来源恢复共享密钥。如果不使用传输层安全性(TLS / SSL),也无法做任何事情。一旦你透露任何秘密,它就不再是秘密了。

在这里有一些关于如何正确执行此操作的好建议:http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html

“你绝对必须使用HTTPS连接,以防止任何中间人偷看你的令牌。”页面本身的重点。

答案 1 :(得分:1)

一个想法是让应用程序根据发送消息的时间计算密钥,然后服务器端就能验证该密钥。服务器必须允许一些时间窗口。

如果您使用Proguard来混淆您的应用代码,则可能会非常难以阅读您的代码(这不是不可能,但很难)。在混淆代码中更容易找到常量而不是查看调用方法正在做什么,所以我建议计算密钥。

使用这种方法,拦截消息的人可以重用密钥(至少不会超过很短的时间)。因此,如果你真的想避免使用https而你的数据不是那么敏感,那么这是一个可能的解决方案。