Spring Security (3.0.x) и олицетворение пользователя - PullRequest
8 голосов
/ 14 июня 2011

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

Как я могу использовать Spring Security, чтобы дать пользователям-администраторам возможность выдавать себя за обычных (не администраторов) пользователей системы?

В документации Spring Security об этом ничего не говорится, и я нигде ничего не могу найти. Наверняка кто-то, должно быть, решил это.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 14 июня 2011

Он находится в Spring Security 3 и Spring Security 4 документах с точным названием «Замена аутентификации при запуске».временно заменить объект аутентификации в SecurityContext и SecurityContextHolder во время фазы обратного вызова защищенного объекта.

3 голосов
/ 14 июня 2011

Я считаю, что рекомендуемый способ сделать это в Spring Security - использовать списки контроля доступа к домену, см. GrantedAuthoritySid @

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/domain-acls.html

Однако олицетворение другого пользователя - это больше, чем просто «идентификация делегата», вы также должны учитывать последствия для ведения журнала:

  • Вы хотите, чтобы ваша регистрация отображалась как Оригинальный пользователь или Олицетворенный пользователь (или оба?)
  • Вы хотите, чтобы "олицетворение" показывало только то, что видит олицетворенный пользователь, или расширенный набор разрешений исходного пользователя и олицетворенного пользователя?

Еще одна возможность заключается в создании функции «войти в систему», которая существенно меняет основной идентификатор текущего сеанса или запускает новый сеанс с олицетворенным идентификатором.

Во всем вышеперечисленном вы можете непреднамеренно открыть проблему безопасности - поэтому я думаю, что именно поэтому функции в стиле олицетворения не так распространены. Скорее, разрабатывается тенденция к управлению доступом на основе ролей (RBAC) или управлению доступом на основе атрибутов (ABAC). Используя RBAC / ABAC, вы можете создать функцию стиля делегата, в которой вы создаете атрибуты / роли делегатов - и в особых случаях, когда вам нужно показать источник / цель делегирования (например, для журналов аудита), вы обрабатываете их как угловые случаи. .

1 голос
/ 24 апреля 2014

Если вы хотите, чтобы пользователь с правами администратора мог выдавать себя за другого пользователя (например, в целях обеспечения качества / тестирования), взгляните на SwitchUserFilter

Предоставляется достойный пример конфигурации XML, которая вам нужна здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...