如何使用 JWT 从中央域登录到 angular 中的子域?

How to login from central domain to subdomain in angular using JWT?

我想实现一个功能,其中有一个中央登录站点让我们说:https://example.com,当用户输入登录凭据时此页面和子域用户想要登录的下拉列表中的 select,用户将登录到该子域,例如 https://abc.example.com.

我正在使用 MEAN 堆栈和 jwt 令牌进行身份验证。 JWT 实现以标准方式应用,首先:将请求发送到“/authenticate”,然后 returned 令牌将存储在浏览器本地存储中。

我已经成功完成了一个站点身份验证,即。从 https://example.com 登录并在该域中登录用户,但现在
我想像这样实现流程 =>

https://example.com 的登录页面上:

  1. 用户可以select从下拉列表中选择要登录的子域
  2. 用户输入登录凭据后(所有子域的这些凭据可以不同或相同)
  3. 用户被重定向到该子域的仪表板页面(JWT 令牌存储在该 selected 子域的本地存储中)

以上是我要实现的流程,如果其他流程达到相同的结果可以更改

我搜索过有关此主题的问题和博客:
我已经通过 SSO ... 但这不是我想要的;因为 SSO 就像在一个子域中登录,它会在其他任何地方登录...但我想从一个登录页面登录到基于用户 selection 的子域的仪表板页面。

我是如何想到实现这个的(不工作):
我将首先使用
等参数向 https://example.com 发送“/authenticate”请求 { username: "alice", password: "****", subDomainUrl: "https://abc.example.com"}
我的 nodejs 后端将进行身份验证,return 我将获得 JWT 令牌。现在我将重定向到该子域(https://abc.example.com)并从 [= 发送此令牌12=]https://abc.example.com 并且它会以某种方式存储在这个子域的 (https://abc.example.com) 本地存储。将其存储到本地存储后,我可以轻松地完成其他工作。

那么如何实现呢?上述方法是否可行;如果那么如何正确地做呢?实现这些架构的最佳方式是什么?任何帮助都会很棒,谢谢!

我建议您先从 https://example.com/ 发送 /authenticate 请求。 它将由nodejs后端验证,然后生成JWT token并重定向到包含token的新子域。

http.get('*',function(req,res){  
    res.redirect('https://abc.example.com?token='+JWTtoken);
})

您可以从子域中获取令牌并存储在本地存储中。此外,您可以使用此令牌进行 api 身份验证。