将 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 article 和my example application,它们已经在使用上面提到的当前未合并的PR。我还没有时间为此编写官方文档。我还写了一篇general article,如何使用JHipster 微服务,您可以在official documentation 之外阅读。
除此之外,您可以向我询问更多信息!
祝你好运