背景
我正在尝试开发一个 Spring Boot/Vaadin 应用程序,该应用程序将用于收集用户输入并通过 REST 将数据传递给另一个应用程序。Vaadin 应用程序位于流程的中间,前端和后端都有一个外部应用程序(JD Edwards EnterpriseOne - 又名 E1)。我附上了一张图片,希望能说明这一点。
登录到 E1 的用户将能够访问 Vaadin 应用程序。他们将使用其用户名和密码以及其他所需信息登录 E1。需要将此信息传递给 Vaadin 应用程序,以便在用户提交表单时,将信息传递给 E1 以验证并执行 E1 应用程序。当然,应用程序也会将用户表单输入传递给 E1。
另一个需要注意的重要事情是 E1 能够调用 REST 端点。这就是我计划调用 Vaadin 应用程序的方式。可以配置连接以指定 URL、HTTP 标头和安全设置。我目前使用基本身份验证。使用 OAuth 2.0 凭据也是一种选择,尽管我不熟悉它。还可以指定客户端证书信息。据我所知,这是从 E1 调用外部应用程序的唯一方法。
问题
我试图弄清楚如何将用户“元数据”传递给 Vaadin 应用程序。
看起来 Vaadin 提供了在调用 Vaadin 视图时将参数传递给它的能力。这似乎采用标准 HTTP URL 参数的形式——而不是我想要传递身份验证信息的方式。是否有其他选项可以将请求数据传递给暴露较少的 Vaadin 应用程序?
我也一直在尝试一个想法,我的 Vaadin 应用程序有一个@RestController
可用于接收元数据的想法(仍然存在相同的安全问题)。然后我需要弄清楚如何从控制器启动 Vaadin 视图并将数据传递给它。
最后,当用户提交表单时,元数据和用户输入数据需要通过 REST 传递给 E1 应用程序,该应用程序在 E1 中完成所有幕后工作。
有没有办法将请求数据传递给不涉及 HTTP 参数的 Vaadin 应用程序?有没有办法保护这些数据?
题外话,但仍然是一个有效的问题
一个主要问题是如何传递用户身份验证信息以使其受到保护。我不太熟悉用于保护基于 Web 的应用程序或此类应用程序之间的通信的技术。E1 系统和运行 Vaadin 应用程序的服务器将位于防火墙后面,但我不确定这是否足够。