Как изменить предоставленную роль временно, чтобы добиться "просмотра сайта как" кого-то другого - PullRequest
1 голос
/ 01 апреля 2010

Мы используем 2.x весеннюю безопасность прямо сейчас. Меня просят создать инструмент администратора, чтобы ROLE_ADMIN мог перейти к любому пользователю на сайте и просматривать сайт как этого человека (каждый человек на сайте может видеть разные вещи в зависимости от роли, которой динамически предоставляется база в базе данных) и, конечно, администратор должен иметь возможность вернуться к администратору без входа в систему.

Есть ли встроенная функция, если нет, то как мне это сделать?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 01 февраля 2011
2 голосов
/ 11 апреля 2010

Я не знаю ни одного готового решения для обеспечения безопасности пружин, которое бы отвечало вашим требованиям, но я могу предложить вам способ его реализации.

  1. Объявите URL для действия «просмотреть сайт как» с параметром запроса для получения имени пользователя, например: /myApp/viewTheSiteAs?user=marley

  2. Напишите свой собственный фильтр, который будет выполнять следующие действия:
    2.1 Подтвердите, что аутентифицированный пользователь является пользователем "admin"
    2.2 Извлечение пользователя из действия («marley» :-))
    2.3 Подтвердите, что он существует (используя UserDetailsService).
    2.4 Создайте новый объект аутентификации с предоставленными полномочиями, который подходит для извлеченного пользователя, и замените текущий объект аутентификации своим собственным объектом: SecurityContextHolder.getContext().setAuthentication(myNewAuthObject)

  3. Добавьте цепочку фильтров в конфигурационный файл Spring Spring для / ViewTheSiteAs, которая будет действовать как обычная цепочка фильтров (должна проверять подлинность «обычного» пользователя как обычного), и найдите свой пользовательский фильтр в конец цепи.

Выполнение следующих действий заставит Spring Security думать, что действие пользователя от viewTheSiteAs является аутентифицированным, и при этом проверять разрешения для этого пользователя.

p.s. - это не нарушение безопасности, поскольку оно понижает полномочия аутентифицированного пользователя, что означает «менее мощный» пользователь.

Удачи.

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