java - 架构 微服务 Jhipster

标签 java jwt jhipster microservices

我想用 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 articlemy example application ,它已经在使用上面提到的当前未合并的 PR。我还没有时间为此编写官方文档。我还写了一个general article ,如何使用 JHipster 微服务,您可以在 official documentation 之外阅读.

除此之外,您可以随时向我询问更多信息!

祝你好运

关于java - 架构 微服务 Jhipster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38460678/

相关文章:

java - 我可以为Java中的目录指定 "base package path"吗?

java - 如何将日期字符串转换为日期

Java BorderLayout 不起作用,JPanel 不会按照我希望的方式移动

python - 在 python 云函数中验证 JWT 访问 token 时出现问题

validation - Identity Server 3 访问 token 验证端点失败,受众验证失败

javascript - Controller 中的注入(inject)工厂使用严格且命名的 IIEF 函数

java - onItemSelectedListner 实现抽象方法

c# - 在 .NET Core 中使用 JWT token 或 API key 的授权机制

java - JHipster Liquibase 警告 SSL Mysql

java - 从静态上下文调用 @Autowired 存储库