【发布时间】:2019-02-05 09:52:22
【问题描述】:
我们有使用 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 资源。
【问题讨论】:
-
好吧,我想在不创建会话的情况下开发无状态服务。因此,您可以拥有任意数量的客户。您也可以在前端使用 OAuth 来保护您的服务
-
安杰洛说的有道理。你就不能无国籍吗?
标签: spring spring-boot spring-security spring-security-oauth2 spring-session