【问题标题】:Separate one module from JSF application从 JSF 应用程序中分离一个模块
【发布时间】:2018-10-06 22:10:13
【问题描述】:

我们有大型 JSF 单体应用程序。我们想改变这个应用程序的架构。目前,我的目标 - 在我们的应用程序中更改一个模块。我需要将逻辑从一个模块转移到另一个应用程序,该应用程序将在另一个技术堆栈上实现(它将是rest-service,前端有一些js-framework)。

应用程序应该以相同的方式工作。我们应该像之前一样拥有指向该页面的链接,但是该页面应该由另一个服务呈现。我们应该在这两个应用程序之间进行相同的会话。用户应该能够在没有额外的身份验证步骤的情况下扔掉页面。

我们还计划移动其他模块,不仅是这个模块。我需要帮助。你有什么想法应该如何实施?有什么例子吗?

【问题讨论】:

  • “前端的一些 js 框架” ;-)... 'some'.... WebFragments 是要走的路。独立于 JSF... 效果很好
  • @Kukeltje,它应该是另一个应用程序。一些 js 框架 - 反应或角度。
  • 我不太了解你,IMO 将业务层与 View 分开是核心,无论“前端”的想法是什么
  • 换个说法:你的意思是垂直还是水平切割模块?

标签: rest jsf jakarta-ee architecture microservices


【解决方案1】:

对我来说,理想的方法是使用像 keycloak 这样的 SSO 服务作为您的身份提供者。这涉及将您的身份验证逻辑移植到它并将其与您的单体分离。但是,一旦您将其作为您的 IdP,您就只能在您的应用程序和 IdP 之间共享令牌。 Keycloak 有许多适配器,用于 Java、Javascript、NodeJs 客户端……等等。这有一个巨大的优势,您可以将逻辑与整体解耦,甚至不需要用 Java 编写新模块。您甚至可以将其与不是您编写的服务集成,它们具有 Open Id Connect 或 SAML 集成就足够了。

KC 支持 SAML 和 OIDC Auth 协议。使用 OIDC(使用全新应用程序的方式),位于每个应用程序中的适配器会检查用户是否具有有效的 Web 会话。如果没有,它会被重定向到 KC 登录页面。有效登录的结果是一个代码,您可以使用它来获取访问令牌(从您的应用程序获取资源的有效令牌)。除此之外,适配器将访问令牌与浏览器 Web 会话联系起来,该会话也存储在 KC 中。因此,如果您尝试访问其他网页,适配器会检查您的网络会话,发现该会话有效。

您也可以使用它从移动设备访问您的应用,自己负责移动应用中的访问令牌管理/更新。

另请参阅:

【讨论】:

  • 终于听到有人“明白了”的欢呼声。在(最初)只阅读前几句话后投票。
猜你喜欢
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 2016-06-10
  • 2011-09-06
  • 1970-01-01
  • 2020-11-02
相关资源
最近更新 更多