Come concedere tutte le autorizzazioni all’applet java tramite JNLP senza popup

Stiamo lanciando un’applet utilizzando jnlp L’applet deve caricare una libreria nativa Il jar e il jnlp sono firmati con un certificato generato automaticamente. Il jnlp concede tutti i permessi con

   

Il file della politica concede tutte le autorizzazioni concedere {permesso java.security.AllPermission; };

Stiamo ricevendo una finestra di dialogo popup “avviso di sicurezza java” Che dice: questa applicazione sta per eseguire un’operazione non sicura. Vuoi continuare ?

Continua o cancella (guarda la schermata allegata)

inserisci la descrizione dell'immagine qui

Non c’è il pulsante “Consenti sempre”

Il che significa che la finestra di dialogo si apre “ogni volta” l’applet viene lanciata. Questo è fastidioso per l’utente.

Cosa si può fare per disabilitare questa finestra di dialogo o per farla apparire al massimo una volta?

Cosa si può fare per disabilitare questa finestra di dialogo o per farla apparire al massimo una volta?

Utilizzare un certificato che è stato verificato da un’autorità attendibile. Disabilitare / ignorare il campo “Consenti sempre” per i certificati autofirmati è una decisione di Oracle che è improbabile che cambi.

Abbiamo avuto un problema con gli argomenti JNLP in realtà. Non puoi specificare alcun argomento nel parametro jre args di JNLP altrimenti riceverai l’avviso di sicurezza.

Per evitare popup di avviso di sicurezza, utilizzare le proprietà e gli argomenti JVM dagli elenchi che si trovano dalla riga 638: http://jajarurcecode.org/html/open-source/jdk/jdk-6u23/com/sun/deploy/config/Config.java .html

Sul tuo JNLP, se gli argomenti JVM includono qualcosa che non è elencato lì, otterrai il popup anche se firmerai correttamente il certificato. Tutto si riduce all’utilizzo di parametri ‘protetti’ + un certificato adeguato e sarà ok.

MODIFICARE

L’URL è stato rimosso, quindi ecco gli argomenti validi:

 // note: this list MUST correspond to native secure.c file private static String[] secureVmArgs = { "-d32", /* use 32-bit data model if available */ "-client", /* to select the "client" VM */ "-server", /* to select the "server" VM */ "-verbose", /* enable verbose output */ "-version", /* print product version and exit */ "-showversion", /* print product version and continue */ "-help", /* print this help message */ "-X", /* print help on non-standard options */ "-ea", /* enable assertions */ "-enableassertions", /* enable assertions */ "-da", /* disable assertions */ "-disableassertions", /* disable assertions */ "-esa", /* enable system assertions */ "-enablesystemassertions", /* enable system assertions */ "-dsa", /* disable system assertione */ "-disablesystemassertions", /* disable system assertione */ "-Xmixed", /* mixed mode execution (default) */ "-Xint", /* interpreted mode execution only */ "-Xnoclassgc", /* disable class garbage collection */ "-Xincgc", /* enable incremental gc. */ "-Xbatch", /* disable background compilation */ "-Xprof", /* output cpu profiling data */ "-Xdebug", /* enable remote debugging */ "-Xfuture", /* enable strictest checks */ "-Xrs", /* reduce use of OS signals */ "-XX:+ForceTimeHighResolution", /* use high resolution timer */ "-XX:-ForceTimeHighResolution", /* use low resolution (default) */ "-XX:+PrintGCDetails", /* Gives some details about the GCs */ "-XX:+PrintGCTimeStamps", /* Prints GCs times happen to the start of the application */ "-XX:+PrintHeapAtGC", /* Prints detailed GC info including heap occupancy */ "-XX:PrintCMSStatistics", /* If > 0, Print statistics about the concurrent collections */ "-XX:+PrintTenuringDistribution", /* Gives the aging distribution of the allocated objects */ "-XX:+TraceClassUnloading", /* Display classs as they are unloaded */ "-XX:SurvivorRatio", /* Sets the ratio of the survivor spaces */ "-XX:MaxTenuringThreshol", /* Determines how much the objects may age */ "-XX:CMSMarkStackSize", "-XX:CMSMarkStackSizeMax", "-XX:+CMSClassUnloadingEnabled",/* It needs to be combined with -XX:+CMSPermGenSweepingEnabled */ "-XX:+CMSIncrementalMode", /* Enables the incremental mode */ "-XX:CMSIncrementalDutyCycleMin", /* The percentage which is the lower bound on the duty cycle */ "-XX:+CMSIncrementalPacing", /* Automatic adjustment of the incremental mode duty cycle */ "-XX:CMSInitiatingOccupancyFraction", /* Sets the threshold percentage of the used heap */ "-XX:+UseConcMarkSweepGC", /* Turns on concurrent garbage collection */ "-XX:-ParallelRefProcEnabled", "-XX:ParallelGCThreads", /* Sets the number of parallel GC threads */ "-XX:ParallelCMSThreads", "-XX:+DisableExplicitGC", /* Disable calls to System.gc() */ "-XX:+UseCompressedOops", /* Enables compressed references in 64-bit JVMs */ "-XX:+UseG1GC", "-XX:GCPauseIntervalMillis", "-XX:MaxGCPauseMillis" /* A hint to the virtual machine to pause times */ }; 

MODIFICARE

Al momento abbiamo avuto questi argomenti:

   

Il problema era con -Djava.security.policy, e non riuscivo a capire il popup fino a quando non l’ho rimosso da lì.

NUOVO URL PER java source jdk6.23

L’utilizzo dei parametri di debug remoto in JAVA_OPTS può causare questo pop-up

-agentlib:jdwp=transport=dt_socket,address=localhost:8000,server=y,suspend=n

Ho avuto i seguenti parametri e ho avuto lo stesso problema:

 -Xss4m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5021 

Rimuovendoli li ha risolti.