【问题标题】:node.js REST api authentication and oauth2node.js REST api 身份验证和 oauth2
【发布时间】:2013-03-06 13:13:31
【问题描述】:

我有几个问题:

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

2) 如果我使用 oauth 2 标准编写我的 webapp 身份验证,是否可以将我的秘密令牌存储在 cookie 中?我认为这会导致 CSRF 漏洞。

正如我所见,passport.js 使用 cookie 来存储秘密令牌,例如 Facebook 或 twitter... 在这种情况下,CSRF 是怎么回事?

【问题讨论】:

    标签: node.js rest csrf passport.js


    【解决方案1】:

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

    1) 对于第一个问题,我的回答肯定是yes!您不想编写 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 作为后端时被广泛使用。

    您可以参考这个问题以在 express 中实现 CSRF 安全性:How to implement CSRF protection in Ajax calls using express.js (looking for complete example)?

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 2020-12-31
      • 2023-03-17
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 2018-07-04
      相关资源
      最近更新 更多