我有一个 React Native 应用程序,我想从中进行 API 调用。我对如何在 Node 后端授权这些调用感到困惑。
方法一:
用户登录应用程序并进行身份验证,然后我返回带有刷新 token 的 JWT。然后将其存储在客户端/ react native 应用程序中,并根据每个请求发送。如果 token 过期,则使用刷新 token 刷新。
方法2:
为每个客户端创建 API key 。当用户创建帐户时,我会创建一个 API key (或者可能像 AWS 那样的访问 key 和 secret key )并随每个请求一起发送。
这两种方法中有首选/推荐的方法吗?也许它们并不相互排斥?我是否仍然需要向我的 React Native 应用程序提供 API key ,以便它可以进行 API 调用,然后使用 JWT 来验证用户身份?
最佳答案
就我个人而言,
您可以选择方法 1,因为在客户端存储/创建 API key
或 secret key
并不安全。
JWT更安全,您可以阅读以下article
在方法 2 中,您很可能会尝试这种方法
根据客户端IP
或设备 token
(无论什么适合您)生成Api key ,并设置包含AES
技术的过期时间,然后在服务器上解密,根据请求者 IP
检查客户端 IP
以及过期时间
。
执行方法 2 的复杂性和时间比方法 1 要多得多,还考虑到我可能没有涵盖所有内容安全用例。
Do I still need to provide an API key to my react native app so that it can make API calls and then I use JWT for authenticating users
您可以正常进行http
调用。推荐的方法是调用您的 token 生成 api
,然后根据该 token 验证其他有值(value)的 api token
如果您使用JWT
希望有帮助。
关于node.js - 用于授权从 React Native 应用程序到 Node 服务器的 API 调用的推荐策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49647644/