У нас есть многопользовательское WebApp, разработанное с использованием Spring Boot + Spring Security. Это приложение используется для управления определенными ресурсами в Azure. Пользователь может войти в наше WebApp с помощью OAuth2.0 и получить доступ к ресурсам Azure через наше приложение.
Теперь нам нужно разрешить нескольким пользователям входить в наше приложение за один сеанс браузера . Таким образом, пользователь (пользователь 1) будет использовать учетные данные1 для входа в систему для доступа к ресурсам, разрешенным этими учетными данными. Затем пользователь будет использовать учетные данные2 (в основном учетные данные других пользователей позволяют называть его user2) для входа на ту же страницу браузера. В одном сеансе будут два активных пользователя. Пользователь должен иметь возможность переключаться между этими учетными записями.
После входа пользователя в наше приложение мы создаем экземпляр RestTemplate (используя введенные учетные данные) для доступа к ресурсам Azure.
Либо у нас может быть один идентификатор JSession, сопоставленный с несколькими RestTemplate, либо несколько идентификаторов JSession (в пределах одного файла cookie JSession), сопоставленные с отдельным RestTemplate. У нас может быть параметр запроса, указывающий, какой RestTemplate использовать.
Мы использовали SpringSecurity для получения токена доступа. Этот токен доступа затем используется в RestTemplate и используется для доступа к ресурсам Azure.