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

时间:2015-02-21 14:29:24

标签: ios node.js mongodb rest mobile

我想构建一个共享同一数据库的Web应用程序和移动应用程序(用于iOS)。目前我对使用RESTful API并让两个应用程序(Web和iOS)与API通信以访问数据感到兴趣。我的问题是我应该使用的身份验证方法。我一直在研究OAuth2.0,但这不是我想要的东西,因为我不希望用户必须授权连接,因为当你使用facebook或google +登录某个地方时会发生这种情况。我只想用用户名和密码登录,然后保持登录状态。这适用于两个应用程序(Web和iOS)。 我正在使用Node.JS和MongoDB来构建API。 我正在尝试以“正确的方式”做事,因为这被认为是我主人的最后一个项目。 你们能告诉我如何实现这一目标吗?

2 个答案:

答案 0 :(得分:5)

使用OAuth 2.0,因此您拥有可扩展的标准和基于令牌的身份验证,使用户可以撤消身份验证票证,例如如果他们的手机被盗了。

OAuth 2.0支持各种授权类型。那些你来自facebook和twitter登录的人可以概括为“三条腿oauth”,但也有两种授权类型用于双腿OAuth,尤其是resource owner password credentials grant(第4.3节)在页面的末尾),它将简单地交换身份验证令牌的用户名和密码。如果你不想,就没有必要实施三条腿的oauth。

我建议在大多数用例中使用基于加密的自我验证令牌的数据库存储令牌。撤销个人拨款或特定客户申请的所有拨款的可能性在实践中非常有用。它还可以缩短令牌数量,并且由于实施中的缺陷而降低了灾难性安全泄漏的风险。确保令牌本身是加密随机的,并使用围绕实际令牌值的简单加密包装来实现(严重)伪造令牌的廉价识别。

答案 1 :(得分:0)

Passport之类的东西(不,不是威士忌,而是中间件)可能是一个好东西来测试

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