使用Ampl Cognito的Node js微服务使用最佳实践

时间:2019-02-22 10:08:02

标签: node.js angular microservices amazon-cognito aws-amplify

我正在开发一个节点js API,我已将其分为几个小的api(微服务),它们使用请求和响应相互通信,而Im则使用angular作为前端,现在我想使用cognito和AWS Amplify,让我很困惑我应该在项目中的哪儿放置AWS Amplify代码?我应该放在前端还是应该有一个单独的node js api来处理安全性?而且,如果有更好的方法,您可以提出建议吗,这是Node和angular的新手,是Java开发人员,所以可以提供任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

可能类似于

Frontend <-> Gateway <-> Microservices

代替

Frontend <-> Microservices

与此同时,这将使您有机会在以后的时间添加服务架构的更复杂的业务流程,而无需调整前端。

现在,关于身份验证,passport.js为您提供了一个非常易于使用的界面,用于向传入的请求添加身份验证。它支持多种身份验证方法,包括但不限于OpenID connect(它反过来适用于AWS / cognito)。 与express.js一起,您应该能够以很少的代码行启动简单的路由/安全服务,并具有根据需要扩展具有更多功能/安全性的选项(例如,您可能希望在某些地方添加会话处理)点或更多与安全性相关的东西,例如XSS保护之类。express的中间件涵盖了这些主题。

[edit]有关安全性的更多注释。总体上可能值得研究OWASP,并且从OWASP's ASVS project作为更具体的出发点,它为您提供了在开发应用程序安全性方面可能/应该遵循的一套准则网络应用程序。有大量备忘单,它们为常见主题提供了指南/最佳实践,例如会话处理,cookie处理,身份验证和其他与安全性相关的主题。