REST API和移动应用程序的身份validation策略

我正在用Node.js和Express + MongoDB创build一个REST API服务器。 这个API将有不同的移动客户端(iOS,Android),以及可能以后的Web应用程序。 我需要用户login才能执行一些API请求。 没有第三方应用程序我想连接(没有Facebook,谷歌等)。 我也不想强迫用户访问一个网页或类似的东西,以便他们login。

根据我在许多search中看到的,最好的方法是让用户使用完全凭证login一次,向他们发送令牌作为回报,并使用该令牌validation将来的请求,直到过期为止。

但是,我不知道如何实现这一点。 我很困惑所有的不同的策略。 这是通过基于HTTPS的身份validation完成的,具有OAuth,OAuth 2.0,…? 我只是不知道该用什么 另外,我真的不想在这里重新发明轮子,不是因为我懒,而是主要是因为安全问题。 有没有我可以用来实现这个库? 我听说护照,但我不明白,如果这是可行的或不。 这听起来像是一个通用的东西,我相信有一个简单的解决scheme。

谢谢!

现在,您可以使用Passport.js和JWT(JSON Web Tokens)和Passport-JWT 。 这很容易使用。

一旦用户login,您就可以向用户发送令牌。 令牌包含有关用户的数据,如id(当然是编码)。 在随后的请求(至less在需要身份validation的地方),确保客户端发送令牌。 在服务器上,您可以查看谁发送了请求(例如,检查用户的授权),只需查看令牌即可。 有关智威汤逊如何检查的更多信息。

有不同的方式发送令牌。 只要看看文件,它就会清楚。 如果没有, 这也帮助了我。

有一个使用oauth2authentication的RESTful服务的例子: https : //github.com/vedi/restifizer-example 。 我希望这会有所帮助。

我觉得你需要在你的服务器上设置一个基于令牌的身份validation过程,这样你就可以从不同types的客户端(Android,iOS,Web等)发出请求。 不幸的是,Passport文档(和基于Passport的教程)似乎只针对“Web应用程序”,所以我不认为你应该将其用于这些目的。

我做了类似以下这个伟大的教程: http : //code.tutsplus.com/tutorials/token-based-authentication-with-angularjs-nodejs–cms-22543

本教程中的客户端部分基于AngularJS,但可以轻松地在移动客户端中应用相同的原则(只需在“/ signin”或“/ authenticate”中发布包含令牌的HTTP请求即可)。 。

祝你好运!