Как предоставить разрешения JSP с помощью файла политики SecurityManager в Resin?
-
19-09-2019 - |
Вопрос
Мы пытаемся использовать SecurityManager с Resin 3.1.9 и сталкиваемся со следующей проблемой:CodeSource.getLocation() возвращает null для скомпилированных JSP.
Это означает, что мы не можем использовать определенную кодовую базу в предложении grant в нашем файле политики, например:
grant codeBase "file:/path_to_resin/runtime/work/-" {
OR grant codeBase "file:/path_to_resin/webapp/JSP-source/-" {
//...some jsp-specific permissions
};
Вместо этого мы должны использовать универсальное предложение о предоставлении:
grant {
//..some jsp-specific permissions. Unfortunately, these will be applied
//to all code!!!
};
Есть ли способ сделать так, чтобы JSP имели надлежащий источник кода?Мы хотели бы ограничить разрешения сторонних библиотек, но предоставить разрешения нашим собственным JSP.Если мы не можем указать JSP в файле политики, возможно, мы не сможем этого сделать, или что вы думаете?
Редактировать:Мы развертываем JSP как есть, поэтому не перекомпилируем их.Возможно, это как-то связано с проблемой.
Решение
Я получил ответ через список рассылки Resin и подумал, что могу опубликовать его и здесь:
Похоже, что в Resin 3 есть ошибка с этим, и теперь есть проблема для этого.В принципе, тот способ, который мы попробовали, должен сработать, или, по крайней мере, он работает на Resin 2.Итак, это должно сработать:
grant codeBase "file:/path_to_resin/runtime/work/-" {
//...some jsp-specific permissions
};
Ведущий разработчик Resin сказал следующее:"Ну, менеджер безопасности снижает производительность, поэтому мы обычно не поощряем это". Возможно, нам придется пересмотреть, разумно ли вообще использовать SecurityManager.Смотрите мой другой вопрос Должен ли я использовать Security Manager в веб-приложениях Java? для более подробного обсуждения этой темы.