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

问题描述 投票:5回答:1

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

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

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

要么我们可以将单个JSession id映射到多个RestTemplate,要么将多个JSession ID(在单个JSession cookie中)映射到单个RestTemplate。我们可以有请求参数来指示要使用的RestTemplate。

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

spring spring-boot spring-security spring-security-oauth2 spring-session
1个回答
1
投票

“现在我们需要允许多个用户在单个浏览器会话中登录我们的应用程序”

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

“要么我们可以将单个会话ID映射到多个RestTemplate,要么将多个JSessionID(在单个JSession cookie中)映射到单个RestTemplate”

我从未见过这种方法。以Google为例 - 您可以切换配置文件,但需要登录。

如果您确实需要这样做,那么Chrome,Firefox和Opera的开箱即用解决方案称为SessionBox,可在同一浏览器中启用会话切换。否则,两种常见的解决方案是:

  • 使用两种不同的浏览器(例如Chrome和Firefox)
  • 使用隐身模式
© www.soinside.com 2019 - 2024. All rights reserved.