1

我想实现一个(小型)微服务基础架构,将应用程序业务逻辑(与域相关)与用户身份验证和 api 密钥管理的繁琐任务分开。

在我的场景中,我有一些属于某些组织的注册用户。注册用户可以读取他们组织的数据(当然还有角色等),他们也有一些自动化服务来读取和写入数据,为了简单起见,使用 api-key 身份验证。

预算很低(比如零),因为它现在是一个概念。所以没有像 AWS、Azure、Auth0 这样的付费服务。我还希望它可以在带有 Docker 的本地容器上运行。业务逻辑的首选语言是 TypeScript/JavaScript ( Nest.js ),尽管我想象一个与语言无关的场景。

所以我的想法是使用:

  • FusionAuth用于用户管理,因为它提供了一个简洁的 UI 和所有用于管理用户数据 (CIAM) 的东西,并支持许多身份验证策略(OAuth2、JWT、...),定义了用户、应用程序、角色等,但不处理每个应用程序的 api-keys或路由(它不是 api-gateway)。
  • Express Gateway用于 api-key 身份验证、路由和访问消费服务,但绕过其用户和应用程序管理系统,我觉得这里不需要
  • 用于业务逻辑服务的Nest.js(或其他 Web 框架),例如向/从主应用程序数据库插入和查询数据

我希望 FusionAuth 和 Express Gateway 一起工作,但我不清楚是否需要实现自定义 express-gateway-plugin(例如使用 jwt?)。

一切都将在处理 https 的反向代理(nginx)后面工作。

我想听听一些建议,例如这种情况是否正确,这些技术是否可以很好地协同工作,是否有人遇到过类似的情况,或者这种情况是否有更好的替代方案。

4

1 回答 1

1

我正在使用 React 和完整的 Express 包,但你可以看到我在我链接的仓库中开始的内容。尚未实现所有内容,但您可以看到我如何通过 JWT 和刷新令牌实现登录,以及我如何验证对页面的访问。在我的应用程序中,前端向 Express 发出请求以确定对页面的访问,因此它与您通常看到的略有不同。这确实增加了一些加载时间,因为它涉及两个 HTTPS 请求(或代码库示例中的本地主机)。它可能不是您正在寻找的东西,但它可能会给您一些想法。

https://github.com/engineertdog/fusionauth-nodejs-react-example

于 2019-07-26T00:22:50.497 回答