Node.js 用于移动应用程序和第三方应用程序的带NodeJS的Resftul Api
我正在用NodeJS开发一个restfulapi,它将服务于特定的移动应用程序和(可能在将来)其他第三方应用程序 经过一些搜索,我决定在开发API时使用ExpressJS作为中间件,Mongoose用于mongo相关操作,PassportJS用于身份验证 但在我的脑海中仍然有一些关于基础设施的问题,我希望你们能启发我Node.js 用于移动应用程序和第三方应用程序的带NodeJS的Resftul Api,node.js,api,express,oauth,passport.js,Node.js,Api,Express,Oauth,Passport.js,我正在用NodeJS开发一个restfulapi,它将服务于特定的移动应用程序和(可能在将来)其他第三方应用程序 经过一些搜索,我决定在开发API时使用ExpressJS作为中间件,Mongoose用于mongo相关操作,PassportJS用于身份验证 但在我的脑海中仍然有一些关于基础设施的问题,我希望你们能启发我 我应该如何保护我的API?首先我想,我可以用OAuth保护所有API端点;但如果使用OAuth,移动应用程序如何使用API 因为第一个问题,我想;我应该开发两个API。一个用于移动
使用OAuth2是安全可靠的,您和其他人可以使用大量的第三方库。
然而
一个可能的解决方案是使用过期时间长(如果有过期的话)的身份验证令牌,但是您需要确保它们被安全地传输和存储。通常,用户总是会得到一个短寿命代币,然后可以将其兑换成一个长寿命代币。这样做的原因是为了避免在响应URL中发送长寿令牌(只有在创建移动应用程序时才可选择)。将短期代币兑换为长期代币的请求通常需要使用应用程序密钥进行签名,以增加安全性(尽管在移动应用程序中,永远不可能完全保护应用程序密钥)
PassportJS还提供了一个可以让您开始的功能,不仅是PassportJS,还有Node。谢谢您的回答,但首先我想问一下您对OAuth2的看法?起初我想用OAuth2,但读完这篇文章后我放弃了。@bahadirarslan世界上所有的大公司都在采用OAuth2,从Facebook到谷歌。规范是明确的,经过深思熟虑的,正如那篇文章本身所说,它们是安全的。他的批评者主要关注第三方可能出现的错误实现。如果你坚持使用公共的、经过测试的图书馆,并且考虑你在做什么,我怀疑你会有任何问题。