Secure Rest API用于受信任的应用程序

时间:2017-01-06 03:26:48

标签: android rest api security

我为Android App创建了其他API。所有API都使用OAuth2(密码grant_type)保护。

用户提供用户名&密码和服务器验证凭据并发出access_token和refresh_token,然后可以用于调用API。

现在问题在于API是公开的,并且对所有人开放。如何验证是否只接受从我的应用程序生成的呼叫。

情境: XYZ是我的应用程序的用户,也是一个非常好的开发人员。他好奇地想弄清楚我的app和apis是如何交互的。现在他也有点雄心勃勃(我猜)并决定创建自己的Android应用程序(类似于我的应用程序)并使用我的其他API。如何根据此用法保护我的API?

我查看了其他一些帖子,但是我没有找到任何有用的东西来保护我的API免受此类使用。

1 个答案:

答案 0 :(得分:2)

至少从工程角度来看,你想做的事情是不可能的。您可以使用各种工具来混淆应用程序中存储的秘密(例如ProGuard),但最终,无论您使用什么机制来混淆秘密,它们都必须可以被使用它们的设备访问。您还可以采取其他步骤来增加逆向工程应用程序所需的时间,例如经常以可能破坏反向工程客户端的方式更改API,或推送更改秘密的强制更新以及用于混淆那些秘密的机制秘密。

尽管如此,无论您做什么,充满动力的用户都可以获得您在申请中分发的任何秘密。

从法律上讲,您有更多选择。您可以通过使用适当的EULA,无法合法地从未经授权的应用程序访问您的API;见Blizzard v BnetD。如果您拥有您的服务提供的数据的版权,您可以阻止第三方在未经您许可的情况下将其复制到其他地方,或者对其进行收费。可能还有其他合法选择;你需要咨询律师。

但为什么要这么麻烦?在开始这条道路之前,或许你应该问问自己为什么要试图阻止其他应用程序首先访问你的API。如果用户发现您的服务很有价值但对您提供的客户非常不满意他们愿意安装第三方应用程序来访问您的服务,那么您可能应该专注于改进自己的客户端,而不是强迫用户使用客户端他们显然不喜欢。

相关问题