node.js REST APIauthentication和oauth2

我有几个问题:

1)使用REST API既是外部API使用,又是作为骨干(或普通的js)前端的服务器端,是不是一个好习惯? 我认为编写一个REST API服务器并将其用作后端要容易得多。

2)如果我写我的webappauthentication与oauth 2标准是一个很好的方式来存储我的秘密令牌在cookie中? 我认为这会造成CSRF漏洞。

正如我看到passport.js使用cookie来存储例如Facebook或Twitter的秘密令牌…在这种情况下是什么关于CSRF?

这是一个非常有趣的问题,我很惊讶没有人回答。

1)对于第一个问题,我的答案肯定是肯定的 ! 你不想写2次的API逻辑。

你可以做的是使用不同的url。

例如。 对于公共的api,你使用http://api.domain.com/objects/,而关于内部的,你可以使用http://domain.com/api/objects/或任何你喜欢的。

然后,您使用相同的逻辑,但具有不同的身份validation策略。 像许多stream行的API(Twitter,Facebook等)一样使用身份validation令牌公开,使用passport.js的日志。

分离的好处是:

  • 你分开安全问题
  • 如果您的应用程序传输大量数据,则可以控制访问带宽(并且您希望将更高的优先级给予您的应用程序,好吧!)
  • 或者你可以简单地控制授权(例如通过公共API不删除)

2)我不是安全专家,但我肯定会信任passport.js身份validation系统,因为它在将节点用作后端时被广泛使用。

你可以参考这个问题来expressionCSRF安全: 如何使用express.js在Ajax调用中实现CSRF保护(查找完整的例子)?

或者,如果您使用FB或Twitter连接策略,则另一种策略是使用刷新令牌。

希望能帮助到你。