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

use*_*440 19 authentication rest oauth node.js express

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

从我在SO上的多次搜索中看到的情况来看,最好的方法是让用户使用完整凭据登录一次,向他们发送一个令牌作为回报,并使用该令牌验证将来的请求,直到它过期.

但是,我不确定如何实现这一点.我对所有不同的策略感到困惑.这是通过HTTPS进行基本身份验证,使用OAuth,OAuth 2.0,......吗?我只是不知道该用什么.另外,我真的不想在这里重新发明轮子,不是因为我很懒,而是因为安全问题.有没有我可以用来实现这个的库?我听说过Passport,但我无法理解这是否可行.这听起来像是一般的东西,我确信那里有一个简单的解决方案.

谢谢!

Ste*_*fan 10

现在,您可以将Passport.js与带有Passport-JWT的 JWT(JSON Web令牌)一起使用.它非常易于使用.

用户登录后,您会向用户发送令牌.令牌包含有关用户的数据,如id(当然是编码的).在后续请求中(至少在需要身份验证的情况下),您确保客户端发送令牌.在服务器上,您可以通过查看令牌来查看谁发送了请求(例如检查用户的授权).有关JWT如何工作的更多信息,请查看此信息.

发送令牌有不同的方法.只是看看文档,它会很清楚.如果没有,也对我有所帮助.


ved*_*edi 0

有一个使用 oauth2 身份验证的 RESTful 服务示例: https: //github.com/vedi/restifizer-example。我希望它会有所帮助。