保护REST API以供Android客户端使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保护REST API以供Android客户端使用相关的知识,希望对你有一定的参考价值。
我们正在开发一个Rails中的JSON REST API,供我们开发的android应用程序使用。有没有办法保护API,使其只能由我们的特定Android应用程序使用?
API是只读的,不涉及任何类型的用户相关或其他敏感信息。但在合理的范围内,我们希望防止滥用并将其限制仅限于我们的应用。
我可以轻松地向API添加身份验证令牌并将其与应用程序一起分发,但是:
- 如果我们使用BASIC auth,我们可能不得不将API移到SSL。
- 对于一个坚定的人打开Android APK二进制文件并且无论如何都要发现身份验证令牌,这可能是微不足道的。
这种情况看起来类似于咖啡馆在商店柜台上发布他们的WiFi密码 - 你必须把秘密告诉所有想要使用你服务的人,所以一开始就把它放在一边似乎毫无意义。
什么是最合理的方法?
想要保护一个可能公开的未公开的API,以便它只能被一个应用程序访问,这意味着您希望阻止人们使用您决定使用API的API。
意味着会尽一切可能使用您的API的人。
如果不是这种情况,添加一个Auth令牌将不会是微不足道的,但对于偶然发现你的API的人来说至少是一个很大的垫脚石。实现这一点并不是一个非常糟糕的主意。
因为此身份验证不是基于用户的,而是基于应用程序的,并且您不希望身份验证依赖于用户输入。该请求必须由应用程序完全完成。
这意味着你必须这样做(添加硬编码令牌)。只有你让一个坚定的人发现访问权限并请求令牌和方法非常困难。
这取决于具体情况,但我会选择SSL和硬编码令牌。
一些额外的安全:
- 向应用程序释放访问令牌,只需要定期发送请求令牌。意味着人们更少机会拦截硬编码的请求令牌,但是基于会话的访问令牌会过期。也许只为每个应用程序安装执行此操作。
- 在通过空中发送之前对此请求令牌进行编码。意味着人们必须反编译你的应用程序。
- 混淆代码(使反编译更加困难)。
以上是关于保护REST API以供Android客户端使用的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Security Rest 插件保护 Grails Rest Api