建筑微服务Jhipster

时间:2016-07-19 13:57:51

标签: java jwt jhipster microservices

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

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

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

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

抱歉我的英文。

1 个答案:

答案 0 :(得分:6)

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

一般设计

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

使用网关

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

安全

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

UAA提供了使用OAuth2来启用各种安全通信的选项。因此,在这种情况下,您可以使您的" CUSTOMER"服务问" HR"更多特权数据,然后允许用户使用FeignClients或一般"客户端凭证授予"。

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

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

结束

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

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

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

祝你好运