65 votes

Manifeste de l'applet Java - Autoriser tous les codes d'appel (Caller-Allowable-Codebase)

Depuis Java 7u45, une applet affiche un message d'avertissement (même si elle est signée avec un certificat fiable) si une page Web tente d'interagir avec elle via javascript et que cette page n'est pas répertoriée dans l'attribut Caller-Allowable-Codebase du manifeste.

Notes de version sur ce changement : http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html

Article du blog d'Oracle sur ce bogue : https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and

Description de l'attribut : http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable

J'ai essayé d'utiliser un simple caractère générique (*), mais je reçois toujours l'avertissement.

Y a-t-il un moyen de contourner ce problème autrement qu'en énumérant toutes les bases de code dans lesquelles il peut être exécuté ?

La raison pour laquelle cela me pose problème est que cette applet fonctionne sur de nombreuses machines et réseaux différents, mais toujours sur des intranets à différents endroits. Cette applet doit également communiquer avec javascript car elle communique avec les balances USB locales, affiche les résultats et interagit avec la page.

Example of warning message

Applet en question : https://github.com/JaggedJax/CIO_Scale

35voto

fiffy Points 380

Mes conclusions sont les mêmes :

Cela évite les avertissements avec Java 7u21 - 7u40 :

Manifest-Version: 1.0
Trusted-Library: true

Cela empêche exclusivement les avertissements avec Java 7u45 :

Manifest-Version: 1.0
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *

Mélanger les deux ne fonctionnera pas en 7u45.

Et maintenant ? Quelqu'un a-t-il trouvé un moyen de permettre aux applets SIGNÉES avec "toutes les autorisations" de fonctionner sans avertissement dans les deux versions de JRE ?

Qu'est-ce qui ne va pas avec oracle ?

26voto

Nikolas Pooch Points 284

La suppression de l'attribut Trusted-Library semble être obligatoire pour que Caller-Allowable-Codebase fonctionne, plus d'avertissements. Cependant, cela brise Java 7 Update 21 - 40 qui traite le code JavaScript qui appelle le code dans une applet signée s'exécutant avec toutes les permissions comme du code mixte et des dialogues d'avertissement sont affichés si les fichiers JAR signés ne sont pas marqués avec l'attribut Trusted-Library=true.

10voto

vbail Points 185

Ce problème sera corrigé dans une prochaine version, selon l'article du blog d'Oracle :

https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and

Ils reconnaissent l'erreur "Ces deux attributs devraient fonctionner ensemble pour prendre en charge les différentes versions des installations clientes". Mais pour l'instant, leur solution est la suivante : " La solution de contournement actuelle serait de privilégier l'utilisation de Caller-Allowable-Codebase par rapport à l'ancien appel Trusted-Library. "

6voto

user2886551 Points 102

J'ai eu le même problème. La solution pour moi était d'utiliser les mêmes paramètres dans le manifeste que ceux utilisés par Oracle sur la page de téléchargement de l'applet pour vérifier la version de Java. http://www.java.com/en/download/installed.jsp Leur applet ne fait apparaître aucun avertissement.

donc la solution est :

Manifest-Version : 1.0
Codebase : *
Permissions : toutes les permissions
Application-Library-Allowable-Codebase : *
Caller-Allowable-Codebase : *
Nom de l'application : APPNAME

il fonctionne sur :
1.7.0_17-b02
1.7.0_25-b17
1.7.0_45-b18

5voto

rob2000 Points 51

De l'oracle :

Zone : Déploiement/Plugin Synopsis : Caller-Allowable-Codebase peut être ignoré lorsqu'il est utilisé avec Trusted-Library.

Si un jar signé et fiable utilise l'attribut manifeste Caller-Allowable-Codebase avec Trusted-Library, l'entrée du manifeste Caller-Allowable-Codebase sera ignorée et, par conséquent, un appel JavaScript -> Java affichera l'avertissement LiveConnect natif. La solution consiste à supprimer l'entrée du manifeste Trusted-Library.

http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X