Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用Node.JS开发的Rest API中实现安全性?_Node.js_Rest_Security_Single Sign On - Fatal编程技术网

如何在使用Node.JS开发的Rest API中实现安全性?

如何在使用Node.JS开发的Rest API中实现安全性?,node.js,rest,security,single-sign-on,Node.js,Rest,Security,Single Sign On,我想设计一个SPA,它将有前端(React)和后端RESTAPI(Node.js、Express、mongoDB)。我计划在我的应用程序中进行单点登录,用户将使用MS Azure AD进行身份验证,其中一个呼叫将从前端转到Azure AD,作为回报,我将为该用户获取一个令牌,该令牌将存储在本地。之后,我想调用我的RESTAPI,在当前登录到UI的用户的上下文中执行多个GET、POST、PUT操作。计划在不同的服务器上部署前端和后端,所以这里我有两个关于保护RESTAPI的问题 CORS实现 BE

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

  • CORS实现
  • BE上的用户身份验证
  • 考虑到上述要求,仅仅实现CORS就足够了,还是需要再次验证BE上的用户


    有人能提供一些最佳实践或经验吗?我的“体系结构”是否存在缺陷?

    CORS不会执行任何用户身份验证。只有当您的客户机代码也来自后端以外的其他域时,您才需要CORS。如果托管静态客户端文件和后端REST端点的服务器是同一台服务器,则不需要CORS。如果你不确定,那么不要考虑CORS,看看它是否起作用。< /P>
    但是您需要身份验证才能知道哪个用户是哪个。

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

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

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

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

    进一步阅读


    Pramgmatic web security的Philippe有一个免费的在线课程可以让您开始学习:它的节奏非常快,应该会给您一些基础知识。(它可能会让您在这个用例中注销OAuth,但不妨试一试)

    您可以在上找到关于Node.js安全性的好建议