Pergunta

Estamos tentando usar SecurityManager com resina 3.1.9 e correr para o seguinte problema:. CodeSource.getLocation () retorna NULL para JSPs compilados

Isto significa que não podemos usar uma específica codebase na cláusula concessão em nosso arquivo de política, por exemplo:

grant codeBase "file:/path_to_resin/runtime/work/-" {
OR grant codeBase "file:/path_to_resin/webapp/JSP-source/-" {
  //...some jsp-specific permissions
};

Em vez disso, temos que usar uma cláusula de concessão universal:

grant  {
  //..some jsp-specific permissions. Unfortunately, these will be applied
  //to all code!!!
};

Existe uma maneira de fazer JSPs ter um CodeSource adequada? Nós gostaríamos de restringir as permissões de bibliotecas de terceiros, mas dar permissões para nossas próprias JSPs. Se não podemos especificar JSPs no arquivo de política, pode não ser capaz de fazer isso, ou o que você acha?

EDIT: Nós implantar JSPs como está, por isso não recompilar-los. Isso pode ter algo a ver com o problema.

Foi útil?

Solução

Eu tenho uma resposta através da lista de resina de discussão e pensei que eu postar aqui também:

Parece que Resin 3 tem um bug com isso e agora há um problema para ele . Basicamente a maneira que nós tentamos deve trabalhar, ou pelo menos ele funciona em Resina 2. Então, isso deve funcionar:

grant codeBase "file:/path_to_resin/runtime/work/-" {
  //...some jsp-specific permissions
};

O chumbo dev para Resina disse o seguinte: "Bem, o gerente de segurança mata desempenho, de modo que geralmente desencorajá-lo." Talvez tenhamos de reconsiderar se é razoável usar SecurityManager em tudo. Veja minha outra pergunta Devo usar o Gerenciador de Segurança em Java aplicações web? para mais discussão sobre o tema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top