Учитывая Java-сервлет (работающий на сервере Windows), который создает новый процесс через ProcessBuilder, каковы мои варианты запуска этого нового процесса в качестве пользователя, который вызвал исходный веб-запрос к сервлету?
Чтобы уточнить, что я хочу, это что-то вроде
ProcessBuilder pb = new ProcessBuilder("whoami");
Process p = pb.start();
// p.getOutputStream() should contain the name of the remote user,
// not the user running the app server
И настоящая цель - выполнить некоторые проверки безопасности (скажем, посмотреть, сможет ли пользователь открыть файл или просмотреть такую-то запись во внутренней корпоративной системе).
Очевидно, что пользователь должен будет как-то проходить проверку подлинности, либо сервером приложений, либо java-кодом - в идеале мне бы хотелось, чтобы это каким-то образом работало с единым входом (т.е. без ввода пользователем пароля) и хорошо, если решение работает только от клиентов Windows, которые уже вошли в домен (хотя даже лучше, если это не ограничение). В настоящее время я использую Jetty в качестве сервера приложений, но переключение на что-то другое, безусловно, будет приемлемым вариантом в случае необходимости.
(Если это поможет уточнить, я в основном ищу замену сценария CGI, который в настоящее время использует функции олицетворения IIS для запуска в контексте пользователя, выполняющего запрос)