Node.JS RESTful API 的最佳身份验证方法

Best authentication method for Node.JS RESTful API

我想构建一个 Web 应用程序和一个共享相同数据库的移动应用程序(针对 iOS)。目前我正在考虑使用 RESTful API 并让两个应用程序(网络和 iOS)与 API 通信以访问数据。我的问题是我应该使用的身份验证方法。我一直在研究 OAuth2.0,但这并不是我想要的,因为我不希望用户在使用 facebook 或 google+ 登录某处时必须授权连接。我只想使用用户名和密码登录,然后保持登录状态。这适用于两个应用程序(网络和 iOS)。 我正在使用 Node.JS 和 MongoDB 构建 API。 我正在尝试做一些事情 "the correct way" 因为这应该是我的硕士的最终项目。 你们能告诉我如何实现这一目标吗?

使用 OAuth 2.0 以便您拥有可扩展的标准和基于令牌的身份验证,使用户能够撤销身份验证票证,例如如果他们的 phone 被偷了。

OAuth 2.0 支持多种授权类型。您从 facebook 和 twitter 登录的那些可以概括为“三足 oauth”,但也有两种用于两足 OAuth 的授权类型,尤其是 resource owner password credentials grant(页面末尾的第 4.3 节)将只需将用户名和密码交换为身份验证令牌。如果您不想,则无需实施三足式 oauth。

对于大多数用例,我建议使用数据库存储的令牌而不是基于加密的自验证令牌。撤销个别授权或特定客户端应用程序的所有授权的可能性在实践中非常有用。它还大大缩短了令牌并降低了由于实施缺陷而导致灾难性安全漏洞的风险。确保令牌本身是加密强随机的,并在实际令牌值周围使用简单的加密包装器,以实现对(严重)伪造令牌的廉价识别。

Passport 这样的东西(不,不是威士忌,而是中间件)可能是测试的好东西

它允许以简单透明的方式在多种不同的身份验证方法中进行选择