Domanda

Ho bisogno di un'applet per aprire un socket e comunicare con un server in ascolto l'host locale su cui è stata scaricata l'applet (la macchina dell'utente finale).

Contrariamente a quanto ho letto sulla sicurezza delle applet, sembra che abbiano firmato anche le applet impossibile aprire un socket su un host diverso dal quale sono stati scaricati (sulla stessa macchina funziona perfettamente)

Ho certificato l'applet con -selfcert, firmato con jarsigner e comunque, ogni volta prova ad aprire un socket su un host diverso, ottengo:

Java.lang.Exception: java.security.AccessControlException: accesso negato (java.net.SocketPermission 127.0.0.1:9999 connettersi, risolvere)

Ho anche provato a modificare il file delle politiche Java, anche se con applet firmate non è necessario farlo:

grant codeBase " http: // applethost: 8080 / socket " {     permesso java.security.AllPermission;     permesso java.lang.RuntimePermission " usePolicy " ;; };

Qual è il problema con le applet sigend, possono connettersi a un host diverso o no?

È stato utile?

Soluzione

Sì, quando si carica l'applet, se si sceglie di accettarne il certificato e di affidarlo, viene concesso AllPermission, che include SocketPermission. Ho già scritto un'applet firmata che si collega a un host diverso da quello da cui è stato caricato. Puoi provare a modificare temporaneamente il tuo file delle politiche java in

grant {
  permission java.security.AllPermission;
};
  • Cerca nel tuo file delle politiche per vedere se definisce altre posizioni policy.url, forse stanno interferendo.
  • Forse controlla le impostazioni del tuo browser per JavaScript.
  • Assicurati di aver accettato il certificato per l'applet e che venga installato nel tuo elenco di certificati del sito.
  • Assicurati che la riga codeBase di concessione che hai sia uguale alla codebase nel manifest dell'applet.
  • Potresti provare a stampare l'elenco delle autorizzazioni che l'applet ha prima di provare a connetterti.
  • Potresti provare a concedere programmaticamente AllPermission dall'applet.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top