Использование нескольких клиентов OAuth2 в одной сессии браузера с использованием Spring boot - PullRequest
0 голосов
/ 30 августа 2018

У нас есть многопользовательское 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.

1 Ответ

0 голосов
/ 05 сентября 2018

"Теперь нам нужно разрешить нескольким пользователям входить в наше приложение за один раз. браузерная сессия "

Безопасен ли этот подход вообще? Я имею в виду, что использование двух пользователей в одном браузере и обмен информацией не рекомендуется.

"Либо у нас может быть один идентификатор JSession, сопоставленный с несколькими RestTemplate или несколько идентификаторов JSession (в пределах одного файла cookie JSession) для сопоставления с Индивидуальный RestTemplate "

Я никогда не видел такого подхода. В качестве примера приведите Google - вы можете переключать профили, но для этого нужно войти в систему.

Если вам действительно нужно это сделать, есть готовое решение для Chrome, Firefox и Opera под названием SessionBox , которое позволяет переключать сеансы в одном и том же браузере. В противном случае, два общих решения:

  • Используйте два разных браузера (например, Chrome и Firefox)
  • Использовать режим инкогнито
...