如何在使用Node.JS开发的Rest API中实现安全性?
我想设计一个SPA,它将有前端(React)和后端RESTAPI(Node.js、Express、mongoDB)。我计划在我的应用程序中进行单点登录,用户将使用MS Azure AD进行身份验证,其中一个呼叫将从前端转到Azure AD,作为回报,我将为该用户获取一个令牌,该令牌将存储在本地。之后,我想调用我的RESTAPI,在当前登录到UI的用户的上下文中执行多个GET、POST、PUT操作。计划在不同的服务器上部署前端和后端,所以这里我有两个关于保护RESTAPI的问题如何在使用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
有人能提供一些最佳实践或经验吗?我的“体系结构”是否存在缺陷?CORS不会执行任何用户身份验证。只有当您的客户机代码也来自后端以外的其他域时,您才需要CORS。如果托管静态客户端文件和后端REST端点的服务器是同一台服务器,则不需要CORS。如果你不确定,那么不要考虑CORS,看看它是否起作用。< /P>
但是您需要身份验证才能知道哪个用户是哪个。虽然CORS肯定是一个考虑因素,但您需要的不是身份验证(AuthN)或授权(AuthZ)。 根据应用程序将拥有的用户数量,后端将如何扩展您可能希望查看OAuth2.0或使用更简单的基于会话的身份验证,但您需要一些东西 您后端的CORS将限制在您以外的域上运行应用程序的浏览器调用您的web服务(它不会停止来自其他工具的API请求) AuthN-您未登录-登录并返回 我 AuthZ-控制用户可以做什么和不能做什么。你可能想 在资源级别强制执行此操作,但您绝对需要在 您的业务逻辑 进一步阅读
Pramgmatic web security的Philippe有一个免费的在线课程可以让您开始学习:它的节奏非常快,应该会给您一些基础知识。(它可能会让您在这个用例中注销OAuth,但不妨试一试)您可以在上找到关于Node.js安全性的好建议