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

时间:2018-08-30 12:35:33

标签: spring spring-boot spring-security spring-security-oauth2 spring-session

我们有使用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资源。

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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

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

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