我想构建一个 Web 应用程序和一个共享相同数据库的移动应用程序(适用于 iOS)。目前我正在考虑拥有一个 RESTful API 并让两个应用程序(Web 和 iOS)与 API 通信以访问数据。我的问题是我应该使用的身份验证方法。我一直在研究 OAuth2.0,但这并不是我想要的,因为我不希望用户在使用 facebook 或 google+ 登录某个地方时必须授权连接。我只想使用用户名和密码登录,然后保持登录状态。这适用于两个应用程序(网络和 iOS)。 我正在使用 Node.JS 和 MongoDB 构建 API。 我正在尝试以“正确的方式”做事,因为这应该是我的主人的最终项目。 你们能告诉我如何实现这一目标吗?
最佳答案
使用 OAuth 2.0,您将拥有可扩展的标准和基于 token 的身份验证,使用户能够撤销身份验证票证,例如如果他们的手机被盗。
OAuth 2.0 支持各种授权类型。您从 facebook 和 twitter 登录的那些可以概括为“三足 oauth”,但对于两足 OAuth 也有两种授权类型,尤其是 resource owner password credentials grant。 (页面末尾的第 4.3 节)将简单地交换用户名和密码以获取身份验证 token 。如果您不想,则无需实现 3-legged oauth。
对于大多数用例,我建议使用数据库存储的 token 而不是基于加密的自验证 token 。撤销个别授权或特定客户端应用程序的所有授权的可能性在实践中非常有用。它还大大缩短了 token 并降低了由于实现缺陷而导致灾难性安全漏洞的风险。确保 token 本身是加密强随机的,并在实际 token 值周围使用一个简单的加密包装器,以实现对(严重)伪造 token 的廉价识别。
关于ios - Node.JS RESTful API 的最佳身份验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646895/