Мы разрабатываем веб-приложение java, которое использует провайдера аутентификации нашей компании в качестве хранилища пользователей.
Итак, наша потребность в том, чтобы дать администратору возможность входа в приложение с помощью «глаза» другого пользователя, как это делают некоторые известные приложения (Facebook, если я хорошо помню)
Например, если я суперадмин и я решил войти в систему как «someuser», который является базовым пользователем, Я увижу ограниченную версию панели инструментов.
Мы используем REST API в нашем бэкэнд-приложении, и мы не хотим помещать пользовательскую информацию в метод подписи API, потому что при каждом запросе мы возьмите эту информацию из маркера cook ie, который сопоставлен с нашим поставщиком аутентификации.
Итак, вот подпись:
GET /me -- retrieve logged user information (according to passed token)
GET /me/permissions -- retrieve logged user permissions (as above)
Теперь идея получения информации о другом пользователе добавить заголовок Speci c к каждому запросу, проверяемому ТОЛЬКО, если я супер администратор.
Например,
GET /me -H "User: foo"
Внутренне, бэкэнд сначала проверит, зарегистрирован ли использование r - супер-администратор, а затем извлекает информацию о пользователе "foo", например, если foo зарегистрирован как сам; кроме того, нет необходимости передавать пользователя в методе подписи, который был бы избыточным или, что еще хуже, бесполезным, если бы я вошел в систему как 'foo'.
Что вы думаете об этой парадигме? Есть ли другой механизм, который соответствует нашим потребностям?