2009-08-25 8 views
0

Wir versuchen, SecurityManager mit Resin 3.1.9 zu verwenden und führen das folgende Problem durch: CodeSource.getLocation() gibt null für kompilierte JSPs zurück.Wie geben Sie JSP-Berechtigungen mit der SecurityManager-Richtliniendatei in Resin?

Das bedeutet, dass wir nicht eine bestimmte Code-Basis in der Finanzhilfeklausel in unserer Policy-Datei, zum Beispiel verwenden können:

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

Stattdessen haben wir eine universelle Zuschuss Klausel verwenden:

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

Ist Gibt es eine Möglichkeit, JSPs mit einer geeigneten CodeSource auszustatten? Wir möchten die Berechtigungen von Drittanbieterbibliotheken beschränken, aber Berechtigungen für unsere eigenen JSPs erteilen. Wenn wir keine JSPs in der Richtliniendatei angeben können, können wir dies möglicherweise nicht tun, oder was denkst du?

BEARBEITEN: Wir implementieren JSPs wie sie sind, also nicht neu kompilieren. Das könnte etwas mit dem Problem zu tun haben.

Antwort

0

bekam ich eine Antwort durch die Harz-Mailingliste und dachte, dass ich es hier zu posten:

Es scheint, dass Harz 3 einen Fehler mit diesem hat, und es gibt jetzt an issue for it. Grundsätzlich ist die Art und Weise, die wir ausprobierten funktionieren sollte, oder zumindest funktioniert es auf Resin 2. So sollte diese Arbeit:

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

Die Entwickler führen für Resin sagte dazu: „Nun, der Sicherheitsmanager Leistung tötet, so dass wir im Allgemeinen entmutigen. " Wir müssen möglicherweise überdenken, ob es überhaupt sinnvoll ist, den SecurityManager zu verwenden. Siehe meine andere Frage Should I use Security Manager in Java web applications? für weitere Diskussion zu dem Thema.