【问题标题】:How to implement Security in Rest API developed using Node.JS?如何在使用 Node.JS 开发的 Rest API 中实现安全性?
【发布时间】:2020-07-28 08:42:30
【问题描述】:

我想设计一个包含前端(React)和后端-Rest API(Node.js、Express、Mongo DB)的 SPA。我计划在我的应用程序中进行单点登录,用户将使用 MS-Azure AD 进行身份验证,其中调用将从前端转到 Azure AD,作为回报,我将获得该用户的令牌,该令牌将存储在本地。之后,我想在当前用户登录 UI 的上下文中调用我的 REST API,用于多个 GET、POST、PUT 操作。计划在不同的服务器上部署前端和后端,所以这里我有两个关于保护我的 REST API 的问题。

  1. CORS 实施
  2. BE 上的用户身份验证

鉴于上述要求,仅实现 CORS 就足够了,还是我需要在 BE 上再次对用户进行身份验证?

有人可以提供一些最佳实践或经验吗?我的“架构”有什么不足吗?

【问题讨论】:

标签: node.js rest security single-sign-on


【解决方案1】:

虽然 CORS 绝对是一个考虑因素,但您需要的不是身份验证 (AuthN) 或授权 (AuthZ)。 根据您的应用程序将拥有的用户数量,后端将如何扩展,您可能希望查看 OAuth2.0 或坚持使用更简单的基于会话的身份验证,但您需要一些东西。

您后端的 CORS 将限制在您的域以外的域上运行应用程序的浏览器调用您的网络服务(它不会停止来自其他工具的 API 请求)。

AuthN - 您未登录 - 登录并返回 我。

AuthZ - 控制您的用户可以做什么和不能做什么。你可能想要 在资源级别执行此操作,但您绝对需要在 你的业务逻辑。

延伸阅读https://auth0.com/docs/authorization/concepts/authz-and-authn

来自 Pramgmatic 网络安全的 Philippe 有一个免费的在线课程可以帮助您入门:https://pragmaticwebsecurity.com/courses/introduction-oauth-oidc.html 它的节奏非常好,应该会给您一些基础知识。 (它可能会让你为这个用例注销 OAuth,但试一试)

【讨论】:

    【解决方案2】:

    CORS 不会执行任何用户身份验证。仅当您的客户端代码来自另一个域而不是您正在谈论的后端时,您才需要 CORS。如果托管静态客户端文件和后端 REST 端点是同一台服务器,则不需要 CORS。如果您不确定,则根本不要考虑 CORS,看看它是否有效。

    但是你需要认证才能知道哪个用户是哪个。

    【讨论】:

      猜你喜欢
      • 2013-03-07
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 2013-08-26
      相关资源
      最近更新 更多