架构 微服务 Jhipster
Architecture Microservices Jhipster
我想用 Jhipster 的微服务开始一个架构,但我有疑问。
我有4个。
- "HR" <- 前后端应用
- "SELECTION" <- 前后端应用
- 验证<- 所有前端只有一个数据库
- Customers <- 在微服务前面 "HR" 和 "SELECT" 之间共享,"HR" 和 "SELECT"。
两个应用程序都必须针对同一数据库 (JWT) 进行验证。
两个应用程序必须共享一个微服务 "CUSTOMER",它将具有后端,但前端将在两个应用程序中的每一个中。
- 1 - "HR" 这将是一个网关?
- 2 - "SELECTION" 这将是一个网关?
- 3 - 如何实现针对同一数据库 (JWT) 验证的安全性
- 4 - "CUSTOMER" 这将是微服务?
对不起我的英语。
将 JHipster 与 JHipster UAA 结合使用可以很好地满足您的需求。
总体设计
您的第一部分是对限界上下文建模,例如 "HR"、"SELECTION" 或 "CUSTOMER"。但是作为微服务后端。模型中的每个项目,如 "customer"、客户 "address" 或 "HR" 实体,都称为资源。这些资源必须在您的服务中明智地划分。
使用网关
JHipster 网关为您做两件事。首先,它获取所有微服务并通过单个 API 网关公开它们。作为次要功能,它还为您提供了一个用户界面(此处:在 bootstrap + Angular 中)。
这并不强制您使用此界面。您可以使用 "jhipster:client" 生成器,仅使用 JS+HTML 为 "HR" 和 "SELECTION" 生成 2 个客户端,并使用 plaig old nginx 为它们提供服务,并参考您的一个 JHipster网关。
安全
这就是 UAA 选项发挥作用的地方。使用默认的 JWT 实现将强制您以用户身份登录(存储在网关中),即使您的 "CUSTOMER" 微服务正在调用 "HR" 微服务。
UAA 提供使用 OAuth2 启用各种安全通信的选项。所以在这种情况下,你可以让你的 "CUSTOMER" 服务询问 "HR" 更多特权数据,然后允许用户使用 FeignClients 或一般 "client credentials grant".
查看
如果您的用户是 "CUSTOMERS",那么您的 JHipster UAA 将成为您的 "CUSTOMER" 微服务。
如果您有时间等待 this feature 正在合并,实现所有这些将变得非常简单,只需声明类似于 jpa 存储库的通信接口,它会为您处理所有安全。
总结
看看你是如何设计你的架构的。为所有服务使用一个网关(可能没有 ui),稍后用 jhipster:client
生成你的 UI 并在 nginx 上提供它们,你的逻辑的所有其他事情都必须实现为 REST API里面有小微服务,看看UAA怎么用。
要了解如何正确使用 UAA,我建议查看 my spring security article and my example application, which is already using the currently unmerged PR mentioned above. I had no time to write the official docs for this, yet. I also wrote a general article, how to use JHipster microservices, which you can read addtionally to the official documentation。
除此之外,您可以随时向我询问更多信息!
祝你好运
我想用 Jhipster 的微服务开始一个架构,但我有疑问。 我有4个。
- "HR" <- 前后端应用
- "SELECTION" <- 前后端应用
- 验证<- 所有前端只有一个数据库
- Customers <- 在微服务前面 "HR" 和 "SELECT" 之间共享,"HR" 和 "SELECT"。
两个应用程序都必须针对同一数据库 (JWT) 进行验证。 两个应用程序必须共享一个微服务 "CUSTOMER",它将具有后端,但前端将在两个应用程序中的每一个中。
- 1 - "HR" 这将是一个网关?
- 2 - "SELECTION" 这将是一个网关?
- 3 - 如何实现针对同一数据库 (JWT) 验证的安全性
- 4 - "CUSTOMER" 这将是微服务?
对不起我的英语。
将 JHipster 与 JHipster UAA 结合使用可以很好地满足您的需求。
总体设计
您的第一部分是对限界上下文建模,例如 "HR"、"SELECTION" 或 "CUSTOMER"。但是作为微服务后端。模型中的每个项目,如 "customer"、客户 "address" 或 "HR" 实体,都称为资源。这些资源必须在您的服务中明智地划分。
使用网关
JHipster 网关为您做两件事。首先,它获取所有微服务并通过单个 API 网关公开它们。作为次要功能,它还为您提供了一个用户界面(此处:在 bootstrap + Angular 中)。 这并不强制您使用此界面。您可以使用 "jhipster:client" 生成器,仅使用 JS+HTML 为 "HR" 和 "SELECTION" 生成 2 个客户端,并使用 plaig old nginx 为它们提供服务,并参考您的一个 JHipster网关。
安全
这就是 UAA 选项发挥作用的地方。使用默认的 JWT 实现将强制您以用户身份登录(存储在网关中),即使您的 "CUSTOMER" 微服务正在调用 "HR" 微服务。
UAA 提供使用 OAuth2 启用各种安全通信的选项。所以在这种情况下,你可以让你的 "CUSTOMER" 服务询问 "HR" 更多特权数据,然后允许用户使用 FeignClients 或一般 "client credentials grant".
查看如果您的用户是 "CUSTOMERS",那么您的 JHipster UAA 将成为您的 "CUSTOMER" 微服务。
如果您有时间等待 this feature 正在合并,实现所有这些将变得非常简单,只需声明类似于 jpa 存储库的通信接口,它会为您处理所有安全。
总结
看看你是如何设计你的架构的。为所有服务使用一个网关(可能没有 ui),稍后用 jhipster:client
生成你的 UI 并在 nginx 上提供它们,你的逻辑的所有其他事情都必须实现为 REST API里面有小微服务,看看UAA怎么用。
要了解如何正确使用 UAA,我建议查看 my spring security article and my example application, which is already using the currently unmerged PR mentioned above. I had no time to write the official docs for this, yet. I also wrote a general article, how to use JHipster microservices, which you can read addtionally to the official documentation。
除此之外,您可以随时向我询问更多信息!
祝你好运