节点 js 微服务与 aws cognito 使用放大最佳实践

Node js microseervices with aws cognito using amplify best practice

我在一个节点 js api 上工作,我把它分成几个小 apis(微服务),它们使用请求和响应相互通信,我使用 angular对于前端,现在我想使用 cognito 和 aws amplify 来保护我的 apis,所以我很困惑我应该将 aws amplify 代码放在我的项目中的什么地方?我应该放在前端还是应该有一个单独的节点 js api 来处理安全性?如果有更好的方法,请您提出建议,我是 Node 的新手并且 angular,我是 java 开发人员,因此我们将不胜感激。

有几点需要考虑。您没有提供有关您的服务如何通信的详细信息,我在这里假设使用 HTTP。

考虑到您想保护您的 API,将安全放在前端会使您的 API 容易受到任何不使用您前端的人的攻击。因此,一般来说,拥有一个共同的 gateway/security 后端服务来保护您的 API 服务是有意义的。

可能是这样的

Frontend <-> Gateway <-> Microservices

而不是

Frontend <-> Microservices

这同时让您有机会在以后添加更复杂的服务架构编排,而无需调整前端。

现在,关于身份验证,passport.js 为您提供了一个非常易于使用的界面来为传入请求添加身份验证。它支持多种身份验证方法,包括但限于 OpenID connect(后者又可与 AWS / cognito 配合使用)。 与 express.js 一起,您应该能够用几行代码完成一个简单的 routing/security 服务,并可以根据需要选择使用更多 features/security 内容扩展它(例如,您可能想要添加某些时候的会话处理,或更多与安全相关的东西,如 XSS 保护等。express 的中间件涵盖了这些主题)。

[edit] 关于安全的更多旁注。 OWASP in general, and, as a more concrete point to start from, OWASP's ASVS project 可能值得一看,它为您提供了一组在开发 Web 应用程序时您 might/should 遵循的有关应用程序安全性的指南。有大量备忘单提供 guides/best 常见主题的实践,例如会话处理、cookie 处理、身份验证和其他安全相关主题。