2

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

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

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

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

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

我确实看过这个这个相关的问题,但它们并不完全是我的场景。这些线程中的建议似乎是a)https +基本身份验证就足够了,不需要oauth,并且b)阻止未经授权的IP地址(问题:我不知道如何检测哪个IP地址是我的移动应用程序用户',这是别人的)。c) 这些线程的另一个见解是,如果我在我的移动应用程序中存储了一些私有密钥以用于识别应用程序,它们很可能会被暴露,因为移动应用程序(至少在 android 上)是完全可逆向工程的。

关于如何最好地设计/实现它的任何建议?仅https +基本身份验证就足够了吗?

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

4

0 回答 0