使用Spring Boot在单个浏览器会话中使用多个OAuth2客户端

Using multiple OAuth2 clients in single browser session using Spring boot

我们有使用Spring Boot Spring Security设计的多租户WebApp。此应用程序用于管理Azure中的某些资源。用户使用OAuth2.0登录到我们的WebApp,并可以通过我们的应用程序访问Azure资源。

现在,我们需要允许多个用户在单个浏览器会话中登录我们的应用程序。因此,基本上,用户(用户1)将使用凭据1登录以访问这些凭据所允许的资源。然后,用户将使用凭据2(基本上另一个用户凭据将其称为user2)登录到同一浏览器页面。同一会话中将有两个活动用户。用户应该能够在这些帐户之间切换。

一旦用户登录到我们的应用程序,我们就会实例化RestTemplate(使用输入的凭据)来访问Azure资源。

我们可以将单个JSession ID映射到多个RestTemplate,或者将多个JSession ID(在单个JSession Cookie中)映射到单个RestTemplate。我们可以使用请求参数来指示要使用哪个RestTemplate。

我们已经使用SpringSecurity来获取访问令牌。然后,此访问令牌在RestTemplate中使用,并用于访问Azure资源。


"Now we need to allow multiple users to login into our app in single
browser session"

这种方法安全吗?我的意思是,建议不要让两个用户使用相同的浏览器并共享信息。

"Either we can have single JSession id mapped to multiple RestTemplate
or multiple JSession ID (within single JSession cookie) to mapped to
individual RestTemplate"

我从未见过这种方法。以Google为例-您可以切换个人资料,但需要登录。

如果您确实需要这样做,可以使用适用于Chrome,Firefox和Opera的现成解决方案SessionBox,该解决方案可以在同一浏览器中进行会话切换。否则,两个常见的解决方案是:

  • 使用两种不同的浏览器(例如Chrome和Firefox)
  • 使用隐身模式