跟踪两个不同服务器之间的用户



我有 2 台服务器:

1) 端口 8443 上的 Apache tomcat 服务器使用 Spring 引导

2) 端口 443 上的节点服务器

它们都是HTTPS。

现在,应用程序的设计方式是服务器 1 处理登录页面,服务器 2 处理仪表板

因此,用户使用 : https//localhost:8443/login 登录

成功登录后,我做了一个

window.open(https//localhost:443/dashboard?userName=xyz,"_self");

将用户重定向到节点服务器托管的仪表板。

现在我的问题是,如果用户直接点击https//localhost:443/dashboard?userName=xyz,那么他可以访问错误的仪表板。

用户应始终仅在登录后访问仪表板。

但是我不能使用会话,因为会话无法在 2 台服务器之间共享。

那么,如果用户已登录服务器 1 并且允许他查看服务器 2 中的仪表板,我如何跟踪呢?

我也打算买一个域名但是如何通过 2 个端口托管它?( 8443 & 443)

我想要类似的东西
1) https//example.com/login ( 端口 8443)
2) https//example.com/dashboard?userName=xyz ( 端口 443 )

对于有关跟踪用户的问题,您可以执行以下操作(自定义解决方案,您也可以使用现有产品来实现)。第 2 a 点和 b 点是同时进行的。

  1. 成功登录后,在第一台服务器上生成令牌

2.a. 将令牌作为参数发送到重定向

2.b. 将令牌从第一个服务器发送到第二个服务器(可能通过 HTTP)并将其关联到用户

  1. 使用来自重定向的内容检查与用户关联的令牌。如果这些不匹配,则引发错误

至于域,您可以设置反向代理,例如Apache,并将不同的路径重定向到不同的服务器。示例:/login 将转到一个端口,其余端口将转到另一个端口

我会建议采用与Alexandru给出的方法类似的方法,但有一个转折 - 登录应该生成JWT并在那里编码所有相关的身份验证信息,以便您的节点.js服务器可以验证它并用于相应地授权用户。

至于你问题的第二部分,Apache或nginx应该就足够了,就像Alexandru建议的那样。

相关内容

  • 没有找到相关文章

最新更新