node.js REST api authentication and oauth2



我有几个问题:

1)使用REST API作为外部API使用和作为主干(或纯js)前端的服务器端是一个很好的做法吗?我认为编写一个REST API服务器并将其用作后端要容易得多。

2)如果我写我的webapp认证与oauth 2标准是一个好方法来存储我的秘密令牌在cookie?我认为这会导致CSRF漏洞。

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

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

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

你能做的就是使用不同的url。

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

则使用相同的逻辑,但使用不同的身份验证策略。公共的一个带有认证令牌,像许多流行的api (Twitter, Facebook等),私有的一个使用passport.js的日志。

分隔的好处是:

  • 将安全问题分开
  • 你可以控制访问带宽,如果你的应用程序传输大量的数据(你想给你的应用程序一个更高的优先级…很可能!)
  • 或者您可以简单地控制授权(例如:没有通过公共API删除)

2)我不是安全专家,但我绝对相信passport.js认证系统,因为它在使用node作为后端时被广泛使用。

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

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

希望能有所帮助。

最新更新