如何仅授权我自己的移动应用程序拨打我的rails 4 api?

时间:2016-05-18 15:30:51

标签: ruby-on-rails oauth rails-api http-token-authentication

我有一个使用devise_token_auth公开api的网络应用程序。我构建了多个移动应用程序,通过https与该Web应用程序的不同方面进行对话。他们使用devise_token_auth获取访问令牌,然后在将来的请求中使用访问令牌。

我想避免其他人创建自己的移动应用程序与我的网络后端交谈的情况。

当从移动客户端进行呼叫时,它使用已在我的服务器上注册的用户和密码来获取访问令牌。如何阻止他人创建自己的移动客户端?

选项1:我可以创建一个秘密api令牌,并在客户端和服务器上使用它,其中移动客户端传递api令牌,服务器只接受包含api令牌的请求。 选项1的问题:任何在线路上看到请求的人现在都可以使用api令牌创建类似的请求,并使用api令牌进行相同的调用。

选项2:我将我的Web服务器设置为oauth服务器,我的应用程序使用oauth仅为我自己的api用户授权客户端请求,并拒绝其他请求。 选项2的问题:我不太了解oauth知道它是否以这种方式工作,以及除了devise_token_auth之外如何实现这一点 - 这实际上意味着在服务器上检查了两个凭证 - api的oauth验证user,以及实际用户的devise_token_auth验证。

我确实查看了thisthis相关问题,但它们并不完全符合我的情况。这些线程中的建议似乎是a)https + basic auth足够且oauth是不必要的,并且b)阻止未经授权的ip地址(问题:我不知道如何检测哪个IP地址是我的手机应用用户'以及其他人的用户。 c)来自这些线程的另一个见解是,如果我在我的移动应用程序中存储了一些私钥以用于识别应用程序,那么它们很可能会暴露,因为移动应用程序(至少在Android上)是完全可反向工作的。

有关如何最好地设计/实施此建议的任何建议?只是https + basic auth足够吗?

我很乐意分享任何代码(因为SO通常会在问题中预期代码) - 但老实说,不知道在这里分享什么代码。

0 个答案:

没有答案