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

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

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

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

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

最佳答案



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



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

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

  • 使用两种不同的浏览器(例如Chrome和Firefox)
  • 使用隐身模式
  • 关于spring - 使用Spring Boot在单个浏览器 session 中使用多个OAuth2客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52097242/

    10-12 01:43
    查看更多