我们有使用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资源。
答案 0 :(得分:1)
”“现在,我们需要允许多个用户一次登录我们的应用程序 浏览器会话”
这种方法安全吗?我的意思是,建议不要让两个用户使用相同的浏览器并共享信息。
”“我们可以将单个JSession ID映射到多个RestTemplate 或多个JSession ID(在单个JSession Cookie中)映射到 单独的RestTemplate”
我从未见过这种方法。以Google为例,您可以切换个人资料,但需要登录。
如果您确实需要这样做,那么可以使用SessionBox的Chrome,Firefox和Opera的现成解决方案,该解决方案可以在同一浏览器中进行会话切换。否则,有两种常见的解决方案: