node.js - 如何正确使用快速网关对 Web 应用程序进行身份验证?

标签 node.js express microservices api-gateway express-gateway

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

我的网络应用程序将有多个微服务与之对话。我认为在我所有的微服务前面放置一个 API 网关可以做到这一点,这样每个微服务就不需要担心用户/请求是否经过身份验证,因为如果正在与微服务通信,则意味着 api 网关已验证请求是有效用户。我的理解正确吗?

假设我认为 api 网关充当其他微服务的看门人的想法是正确的,我的后续问题是关于它如何执行的细节。

这是否意味着所有的用户创建和认证都由api网关来完成?这意味着我将没有自定义用户创建/登录微服务?或者我是否可以通过 api 网关自定义用户创建微服务公开访问该微服务,该微服务在创建时会在 api 网关内创建用户帐户?用户信息现在是否被我的微服务复制到某处的数据库和快速网关自己的存储中?我想我一般的困惑是 api 网关是否完全脱离了 web 应用程序自己的微服务来承担身份验证/用户创建的角色,还是您仍然需要这两个部分?

我认为我自己的身份验证微服务会首先验证用户,然后使用 api 网关生成有效的短期 token ,但是阅读有关在 express-gateway 中创建用户或应用程序帐户以进行身份​​验证的内容让我对角色感到困惑每场比赛。

最佳答案

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

Is my understanding of this correct?

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

对于存储,这取决于。

Express Gateway 提供身份服务的子集,例如用户、应用程序和凭证。它们足以满足大多数应用程序的使用,但您可能会发现自己需要使用外部服务,例如 Auth0。

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

关于node.js - 如何正确使用快速网关对 Web 应用程序进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573236/

相关文章:

javascript - Node.js 和 expressjs 路由到另一个文件夹

node.js - req.headers.origin 未定义

docker - 在Kubernetes/Nginx中为客户端设置正确的主机名

ruby-on-rails - Docker-在单个容器中运行两个进程

node.js - MS Teams 调用 - 无法读取 .wav 文件

node.js - Visual Studio 代码调试器未附加由 express 生成器生成的示例 express 项目

Node.js ORM mysql 通过 SSH 隧道连接

javascript - 当请求结束时 NodeJS 终止 setTimeout()

ruby-on-rails - Docker,所有其他正在运行的服务都拒绝连接

javascript - 计算过程中 Macrotask 和 Microtask 队列的状态