Как предоставить разрешения JSP с помощью файла политики SecurityManager в Resin?

StackOverflow https://stackoverflow.com/questions/1326770

Вопрос

Мы пытаемся использовать 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? для более подробного обсуждения этой темы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top