【问题标题】:Architecture Microservices Jhipster架构微服务 Jhipster
【发布时间】:2016-11-22 11:24:26
【问题描述】:

我想用 Jhipster 的微服务开始一个架构,但我有疑问。 我有 4 件。

  • “HR”
  • “SELECTION”
  • 验证
  • 客户

两个应用程序必须针对同一个数据库 (JWT) 进行验证。 两个应用程序必须共享一个微服务“客户”,该微服务将具有后端,但前端将位于两个应用程序中的每一个中。

  • 1 - “HR”会是一个网关吗?
  • 2 - “SELECTION” 这将是一个网关?
  • 3 - 如何实现针对同一数据库 (JWT) 验证的安全性
  • 4 - “客户”会是一个微服务?

对不起我的英语。

【问题讨论】:

    标签: java jwt jhipster microservices


    【解决方案1】:

    将 JHipster 与 JHipster UAA 结合使用可以很好地满足您的需求。

    一般设计

    您的第一部分是为有界上下文建模,例如“HR”、“SELECTION”或“CUSTOMER”。但作为微服务后端。模型中的每个项目,作为“客户”、客户“地址”或“HR”实体,都称为资源。这些资源必须在您的服务中明智地分配。

    使用网关

    JHipster 网关为您做了两件事。首先,它需要您的所有微服务并通过单个 API 网关公开它们。作为次要功能,它还为您提供了一个用户界面(此处:在 bootstrap + Angular 中)。 这并不强制您使用此界面。您可以使用“jhipster:client”生成器,仅使用 JS+HTML 为“HR”和“SELECTION”生成 2 个客户端,并使用 plaig old nginx 为它们提供服务,并参考您的一个 JHipster 网关。

    安全

    这就是 UAA 选项发挥作用的地方。使用默认的 JWT 实现将强制您以用户身份登录(存储在网关中),即使您的“CUSTOMER”微服务正在调用“HR”微服务。

    UAA 提供了使用 OAuth2 启用各种安全通信的选项。因此,在这种情况下,您可以让“客户”服务向“人力资源”询问更多特权数据,然后允许用户查看,使用 FeignClients 或一般的“客户端凭据授予”。

    如果您的用户是“客户”,那么您的 JHipster UAA 将成为您的“客户”微服务。

    如果您有时间等待this feature 正在合并,那么实现这一切将变得像声明类似于 jpa 存储库的通信接口一样简单,它会为您处理所有安全问题。

    结束

    看看你是如何设计你的架构的。为所有服务使用一个网关(可能没有 ui),稍后使用jhipster:client 生成您的 UI 并在 nginx 上提供它们,您的逻辑的所有其他内容都必须在小型微服务中实现为 REST API,并查看如何使用 UAA。

    要了解如何正确使用UAA,我建议看看my spring security articlemy example application,它们已经在使用上面提到的当前未合并的PR。我还没有时间为此编写官方文档。我还写了一篇general article,如何使用JHipster 微服务,您可以在official documentation 之外阅读。

    除此之外,您可以向我询问更多信息!

    祝你好运

    【讨论】:

      猜你喜欢
      • 2015-12-26
      • 2021-08-26
      • 1970-01-01
      • 2019-01-17
      • 2017-02-14
      • 2016-11-23
      • 2018-03-29
      • 2019-03-23
      相关资源
      最近更新 更多