Domanda

Stiamo cercando di utilizzare SecurityManager con resina 3.1.9 ed eseguire nel seguente problema:. CodeSource.getLocation () restituisce null per compilato JSP

Questo significa che non possiamo usare una base di codice specifica clausola di concessione nel nostro file della politica, ad esempio:

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

Al contrario, dobbiamo usare una clausola sussidio universale:

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

C'è un modo per fare JSP avere una corretta CodeSource? Vorremmo limitare le autorizzazioni di librerie di terze parti, ma dare le autorizzazioni per la nostra JSP. Se non possiamo specificare JSP nel file delle politiche, potremmo non essere in grado di fare questo, o quello che ne pensi?

EDIT: Ci schieriamo JSP così com'è, in modo da non li ricompilazione. Questo potrebbe avere qualcosa a che fare con il problema.

È stato utile?

Soluzione

ho ottenuto una risposta attraverso la resina mailing list e ho pensato che ho posto anche qui:

Sembra che Resina 3 ha un bug con questo e non c'è ora un problema per esso . Fondamentalmente il modo in cui abbiamo provato dovrebbe funzionare, o almeno funziona su Resina 2. Quindi, questo dovrebbe funzionare:

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

Il piombo dev per resina ha detto questo: "Beh, il responsabile della sicurezza uccide le prestazioni, quindi abbiamo generalmente scoraggiare esso." Potremmo essere costretti a riconsiderare se è ragionevole usare SecurityManager a tutti. Vedere la mia altra domanda dovrei utilizzare Security Manager in Java applicazioni web? per ulteriori discussioni sul tema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top