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

使用Spring boot在单浏览器会话中使用多个OAuth2客户端,spring,spring-boot,spring-security,spring-security-oauth2,spring-session,Spring,Spring Boot,Spring Security,Spring Security Oauth2,Spring Session,我们使用Spring Boot+Spring Security设计了多租户WebApp。此应用程序用于管理Azure中的某些资源。用户使用OAuth2.0登录到我们的Web应用程序,并可以通过我们的应用程序访问Azure资源 现在我们需要允许多个用户在单浏览器会话中登录我们的应用程序。所以基本上用户(用户1)将使用credentials1登录以访问这些凭据允许的资源。然后用户将使用credentials2(基本上是另一个用户credentials,我们称之为user2)登录到同一个浏览器页面。同

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

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

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

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

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

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

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

“我们可以将单个JSession id映射到多个RestTemplate 或要映射到的多个JSession ID(在单个JSession cookie中) “单个RestTemplate”

我从未见过这种方法。以谷歌为例——你可以切换配置文件,但需要登录

如果你真的需要这样做,有一个现成的Chrome、Firefox和Opera解决方案,它可以在同一个浏览器中进行会话切换。否则,两种常见的解决方案是:

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

我想做的是在不创建会话的情况下开发无状态服务。因此,您可以拥有任意数量的客户。您可以通过在前端使用OAuth来保护您的服务。Angelo说的有道理。你不能变成无国籍吗?