yokka
27-05-2008, 18:07
Abbiamo riscontrato un problema per qunato riguarda i file di policy in java rmi.
Nel nostro caso abbiamo un client che carica dinamicamente una classe da codebase il cui protocollo è http.
il file di policy per il client è:
grant codeBase "file:///home/accounts/studenti/matricola1/javarmi/-" {
//permission java.io.FilePermission "/home/accounts/studenti/matricola1/public_html/-", "read, execute";
permission java.net.SocketPermission "indirizzo:8000" , "connect, resolve";
permission java.net.SocketPermission "indirizzo:1098" , "connect, resolve";
permission java.net.SocketPermission "indirizzo:37000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:38000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:39000", "connect, resolve";
permission java.io.FilePermission "/home/accounts/studenti/matricola/-", "write, read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledCipherSuites", "read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledProtocols", "read";
permission java.lang.RuntimePermission "exitVM.0";
};
grant codeBase "http://indirizzo:8000/common/" {
//grant codeBase "file:///home/accounts/studenti/matricola/public_html/common/-" {
permission java.net.SocketPermission "indirizzo:1098", "connect, resolve";
permission java.net.SocketPermission "indirizzo:37000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:38000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:39000", "connect, resolve";
permission java.io.FilePermission "/home/accounts/studenti/matricola1/-", "write, read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledCipherSuites", "read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledProtocols", "read";
permission java.lang.RuntimePermission "exitVM.0";
};
Il primo dominio di protezione specifica i permessi del client di bootstrap mentre il secondo specifica i permessi per la classe caricata da codebase.
Commentando il le socket permissione nel secondo dominio di protezione la classe caricata riesce comunque a connettersi ai server agli indirizzi e alle porte specificate.
Rileviamo che con il protocollo file questo non accade e sono necessari anche le socketpermission commentate precedentemente. Perchè? E' normale?
Qualcuno sa rispondermi?
Nel nostro caso abbiamo un client che carica dinamicamente una classe da codebase il cui protocollo è http.
il file di policy per il client è:
grant codeBase "file:///home/accounts/studenti/matricola1/javarmi/-" {
//permission java.io.FilePermission "/home/accounts/studenti/matricola1/public_html/-", "read, execute";
permission java.net.SocketPermission "indirizzo:8000" , "connect, resolve";
permission java.net.SocketPermission "indirizzo:1098" , "connect, resolve";
permission java.net.SocketPermission "indirizzo:37000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:38000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:39000", "connect, resolve";
permission java.io.FilePermission "/home/accounts/studenti/matricola/-", "write, read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledCipherSuites", "read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledProtocols", "read";
permission java.lang.RuntimePermission "exitVM.0";
};
grant codeBase "http://indirizzo:8000/common/" {
//grant codeBase "file:///home/accounts/studenti/matricola/public_html/common/-" {
permission java.net.SocketPermission "indirizzo:1098", "connect, resolve";
permission java.net.SocketPermission "indirizzo:37000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:38000", "connect, resolve";
permission java.net.SocketPermission "indirizzo:39000", "connect, resolve";
permission java.io.FilePermission "/home/accounts/studenti/matricola1/-", "write, read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledCipherSuites", "read";
permission java.util.PropertyPermission "javax.rmi.ssl.client.enabledProtocols", "read";
permission java.lang.RuntimePermission "exitVM.0";
};
Il primo dominio di protezione specifica i permessi del client di bootstrap mentre il secondo specifica i permessi per la classe caricata da codebase.
Commentando il le socket permissione nel secondo dominio di protezione la classe caricata riesce comunque a connettersi ai server agli indirizzi e alle porte specificate.
Rileviamo che con il protocollo file questo non accade e sono necessari anche le socketpermission commentate precedentemente. Perchè? E' normale?
Qualcuno sa rispondermi?