建筑微服务Jhipster

jos*_*des 1 java jwt jhipster microservices

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

  • "HR"< - 前端和后端应用程序
  • "选择"< - 前端和后端应用程序
  • 验证< - 所有前端只有一个数据库
  • 客户< - 在微服务和"HR"和"SELECT"之前在"HR"和"SELECT"之间共享.

必须针对同一数据库(JWT)验证这两个应用程序.两个应用程序必须共享一个具有后端的microservicio"CUSTOMER",但前端将分别位于两个应用程序中.

  • 1 - "HR"这将是一个门户?
  • 2 - "选择"这将是一个门户?
  • 3 - 如何实现针对同一数据库(JWT)验证的安全性
  • 4 - "客户"这将是一个microservicio?

对不起我的英语不好.

Dav*_*man 6

通过将JHipster与JHipster UAA结合使用,您的需求非常合适.

一般设计

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

使用网关

JHipster网关为您做两件事.首先,它需要您的所有微服务并通过单个API网关公开它们.作为辅助功能,它还为您提供了一个用户界面(此处:在bootstrap + Angular中).这不会强制您使用此界面.您可以使用"jhipster:客户端"发生器,生成2个客户端的"HR"和"选择",只有JS + HTML,并使用plaig老nginx的为他们服务,并参阅您的一个JHipster网关.

安全

这是UAA选项发挥作用的地方.使用默认JWT实施将迫使你登录为用户(存储在网关),即使你的"客户"的microService呼吁"HR"微服务.

UAA提供了使用OAuth2来启用各种安全通信的选项.所以在这种情况下,你可以让你的"客户"服务要求"HR"享有更多特权的数据,那么用户将被允许看到的,使用FeignClients或一般的"客户端凭证授予".

如果您的用户是"客户",那么您的JHipster UAA将成为您的"CUSTOMER"微服务.

如果你有时间等待这个功能被合并,实现所有这些将变得像声明类似于jpa存储库的通信接口一样简单,jpa存储库处理所有的安全保护.

包起来

看看你如何设计你的架构.使用所有服务(也许没有UI)的一个网关,后来与生成你的用户界面jhipster:client,并为他们提供服务的nginx的,和你的逻辑的所有其他事情都被实现为REST API的内部小微服务,并看看如何使用UAA.

要学习如何以正确的方式使用UAA,我建议看看我的春季安全文章我的示例应用程序,它已经使用了上面提到的当前未合并的PR.我还没有时间为此编写官方文档.我还写了一篇文章,如何使用JHipster微服务,你可以在官方文档中添加它们.

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

祝好运