如何正确使用Express-gateway进行Web应用程序身份验证?

Don*_*889 6 node.js express microservices api-gateway express-gateway

一般来说,我对微服务和api网关的概念还很陌生。我试图了解api网关在使用许多微服务的现代Web应用程序中扮演的角色。我一直在阅读express-gateway的文档和教程,但是对于Web应用程序如何使用像express-gateway这样设置的api网关执行身份验证有些困惑。

我的Web应用程序将具有与之对话的多个微服务。我以为将API网关放在所有微服务的前面,这样每个微服务都不必担心用户/请求是否经过身份验证,因为如果与微服务进行对话,则意味着api网关已验证请求为有效用户。我对此的理解正确吗?

假设我认为api网关充当其他微服务的网守是正确的,那么我的后续问题是如何执行它的细节。

这是否意味着所有用户创建和身份验证都由api网关执行?意味着我没有自定义用户创建/登录微服务?还是我可以通过api网关自定义用户创建微服务来公开访问,该服务在创建时本身会在api网关内创建用户帐户?我的微服务现在是否在某个地方的数据库和快速网关自己的存储中复制了用户信息?我想我的普遍困惑是,api网关会完全代替Web应用程序自己的微服务来承担身份验证/用户创建的角色,还是您仍然需要这两个部分?

我以为自己的身份验证微服务会首先验证用户,然后使用api网关生成有效的短期令牌,但是阅读有关在Express-gateway中创建用户或应用程序帐户进行身份验证的信息,使我对每次扮演的角色感到困惑。

Vin*_*nzo 6

要大致了解 API 网关在基于微服务的解决方案中的作用,我建议您查看我几个月前所做的演示。这应该澄清一些事情。

我对此的理解是否正确?

是的,你明白了。如果您查看视频,您实际上也可以在实践中看到该概念。

对于存储,这取决于。

Express Gateway 提供了一部分身份服务,例如用户、应用程序和凭据。它们对于大多数应用程序使用来说已经足够好了,但您可能会发现自己需要使用外部服务,例如 Auth0。

现在,撇开功能不谈——你在哪里存储数据,这取决于你。您可以将部分数据保存在 Express Gateway 中,将部分数据保存在您自己的数据库中 — 或者完全保存在 Express Gateway 中。这里没有好的或坏的策略。