我想用 Jhipster 的微服务开始一个架构,但我有疑问。 我有 4 件。
- "HR"<- 前后端应用
- "SELECTION"<- 前端和后端应用
- 验证 <- 所有前端只有一个数据库
- 客户 <- 在微服务前面的“HR”和“SELECT”以及“HR”和“SELECT”之间共享。
两个应用程序必须针对同一数据库 (JWT) 进行验证。 两个应用程序必须共享一个微服务“CUSTOMER”,它将拥有后端,但前端将在两个应用程序中的每一个中。
- 1 - “HR” 这将是一个网关?
- 2 - “SELECTION”这将是一个网关?
- 3 - 如何实现针对同一数据库 (JWT) 验证的安全性
- 4 - “客户”这将是一个微服务?
对不起我的英语。
最佳答案
将 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 存储库的通信接口(interface)一样容易,它会为您处理所有安全。
总结
看看你是如何设计你的架构的。为所有服务使用一个网关(可能没有 ui),稍后用 jhipster:client
生成你的 UI 并在 nginx 上提供它们,你的逻辑的所有其他事情都必须在小的内部实现为 REST API微服务,并了解如何使用 UAA。
要了解如何正确使用 UAA,我建议查看 my spring security article和 my example application ,它已经在使用上面提到的当前未合并的 PR。我还没有时间为此编写官方文档。我还写了一个general article ,如何使用 JHipster 微服务,您可以在 official documentation 之外阅读.
除此之外,您可以随时向我询问更多信息!
祝你好运
关于java - 架构 微服务 Jhipster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460678/