如何正确使用快速网关对Web应用进行身份验证?

时间:2018-07-28 16:31:17

标签: 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中创建用户或应用程序帐户进行身份验证的信息,使我对角色感到困惑每场比赛。

1 个答案:

答案 0 :(得分:2)

要概述API网关在基于微服务的解决方案中的作用,建议您看一下我几个月前所做的presentation。那应该可以使事情有所澄清。

  

我对此理解是否正确?

是的,您知道了。如果您观看视频,实际上也可以在实践中看到该概念。

对于存储,取决于。

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

现在,除了功能之外-由您自己决定在哪里存储数据。您可以将某些数据保留在Express Gateway中,并将某些保留在您自己的数据库中-或完全保留在EG中。这里没有好的或坏的策略。