Applet Java manifeste - Permettre à tous les Appelant Admissibles à base de Code
De Java 7u45 une applet affiche un message d'avertissement (même si elle est signée de confiance avec un cert) si une page web essaie d'interagir avec lui via javascript et que la page n'est pas répertorié dans le manifeste de l'Appelant-Admissibles-attribut Codebase.
Release notes à propos de ce changement: http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html
Oracle billet de blog à propos de ce bug: https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and
Attribut description: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/manifest.html#caller_allowable
J'ai essayé à peu un caractère générique (*), mais j'ai toujours le message d'avertissement.
Est-il un moyen de contourner ce problème autre que la liste de tous les codes base, il peut courir à?
La raison que c'est un problème pour moi est que cette applet fonctionne sur de nombreuses machines et des réseaux, mais toujours sur des intranets à divers endroits. Cette applet doit également communiquer avec le javascript, car il parle de USB local échelles et affiche les résultats et interagit avec la page.
Applet en question: https://github.com/JaggedJax/CIO_Scale
- Je suis les mêmes problèmes, je pense que c'est ridicule, qui a signé des applets l'exiger, je n'ai pas trouvé de solution encore.
- Je suis à la recherche dans Déploiement des Ensembles de règles mais je n'ai pas eu à le faire fonctionner encore. De Plus il supposerait de revenir et de les installer à chaque emplacement.
Vous devez vous connecter pour publier un commentaire.
Retrait de la Confiance-attribut Bibliothèque semble être obligatoire pour obtenir l'Appelant Admissibles à base de Code de travail, plus de mises en garde. Toutefois, cela rompt avec Java 7 Update 21 - 40, qui a traité du code JavaScript qui appelle le code à l'intérieur d'une applet signée en cours d'exécution avec toutes les autorisations dans le code mixte et boîtes de dialogue d'avertissement sont augmentés si le signés les fichiers JAR ne sont pas marqués avec la Confiance-Bibliothèque=true attribut.
Mes conclusions sont les mêmes:
Cela empêche les mises en garde avec Java 7u21 - 7u40:
Ce exclusif empêche les mises en garde avec Java 7u45:
Le mélange des deux ne fonctionnent pas dans 7u45.
Maintenant?
Quelqu'un a trouver un moyen pour permettre SIGNÉ applets avec "toutes les autorisations" à s'exécuter sans avertissements dans les deux JRE versions?
Ce que l'enfer est le problème avec oracle?
<java version="1.7.0_45+"><resources><jar href="MyApp-CodebaseInManifest.jar"/></resources></java> <java version="1.7.0_21+"><resources><jar href="MyApp-TrustedLibraryInManifest.jar"/></resources></java>
<resources><j2se version="1.7.0_45+" href="http://java.sun.com/products/autodl/j2se"/><!-- NOT WORKING VERSION SELECTION --><jar href="a_45.jar" main="true"/></resources><resources><j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/><!-- NOT WORKING VERSION SELECTION --><jar href="a_21.jar" main="true"/></resources>
Ce sera corrigé dans une future version, selon l'oracle blog:
https://blogs.oracle.com/java-platform-group/entry/7u45_caller_allowable_codebase_and
Ils reconnaissent l'erreur "ces Deux attributs doivent travailler ensemble pour soutenir les différentes versions des installations de client". Mais pour l'instant, leur solution est la suivante: "Les travaux en cours autour de la serait en faveur de l'aide de l'Appelant Admissibles à base de Code sur le vieux Confiance-appel de la Bibliothèque. "
J'ai eu le même problème. Pour moi, la Solution a été en utilisant les mêmes paramètres dans le manifeste comme Oracle utilisé sur télécharger la page de l'applet pour vérifier la version de java http://www.java.com/en/download/installed.jsp
Leur applet ne déroulant tous les avertissements.
donc la solution est:
il fonctionne sur:
1.7.0_17-b02
1.7.0_25-b17
1.7.0_45-b18
à partir d'oracle:
Zone: Déploiement/Plugin
Synopsis: l'Appelant est Autorisée à base de Code peut être ignoré lorsqu'il est utilisé avec Confiance-Bibliothèque.
Si une personne de confiance, signé le pot est à l'aide de l'Appelant Admissibles à base de Code de manifeste de l'attribut avec Confiance-Bibliothèque, puis l'Appelant Admissibles à base de Code manifeste entrée sera ignorée et, en conséquence, JavaScript> Java appel montrera le natif LiveConnect avertissement. La solution de contournement consiste à retirer la Confiance-la Bibliothèque de l'entrée du manifeste.
http://www.oracle.com/technetwork/java/javase/7u45-relnotes-2016950.html
La seule solution que je peux penser qui fonctionne avec 7u45 et la Confiance-versions de la Bibliothèque (7u21, 7u25 et 7u40) est de créer deux Bocaux avec les différents manifestes et puis la détection de l'utilisateur, version de chargement et celui de droite.
De la version principale servi pour les versions avant 7u21 et 7u45 et aura le nouvel Appelant Admissibles à base de Code et pas de Confiance-entrée de la Bibliothèque. La deuxième version du produit ont fait Confiance-Bibliothèque et sera servi uniquement à 7u21, 7u25 et 7u40.
Ici est une fourmi de macro pour créer le nouveau pot avec la modification de manifeste:
Appel de la macro comme ceci pour chaque POT que les besoins de la modification:
Oubliez pas de signer le nouveau POT. Si elle a été déjà signé cette modification aura pour effet d'invalider la signature.
Nous utilisons le PluginDetect bibliothèque pour détecter la version de Java. Il suffit d'extraire PluginDetect_Java_Simple.js et getJavaInfo.jar. Ce code permettra d'obtenir la version de java:
Nous utilisons javascript pour le lancement de notre applets donc nous utilisons cette information pour décider entre la norme et de confiance-bibliothèque applets:
J'ai eu le même problème, j'ai Donc supprimer de Confiance-Bibliothèque=true à partir de mon MANIFESTE.MF, le travail de l'Appelant-Admissibles-attribut Codebase amende.
Pour la mise à jour 1.7.0_25 (et probablement 21-40), le réglage des paramètres de sécurité sur Moyen dans le Panneau de configuration Java -> onglet Sécurité supprime les invites lors de l'utilisation du manifeste des balises pour la mise à jour 1.7.0_45.
Cet ensemble d'attributs permet à l'applet de charge sans avertissements en Java 7u45:
Nous avons testé sur les points suivants Jvm:
Java 7u21- doit inclure de Confiance-Bibliothèque pour éviter d'avertissementJava 7u25- doit inclure de Confiance-Bibliothèque pour éviter d'avertissementJava 7u40- doit inclure de Confiance-Bibliothèque pour éviter d'avertissementDe sorte que la longue et courte est que nous avons un dilemme: ne pas avoir de message d'avertissement sur le 7u21, 7u25 et 7u40 vous devez inclure de Confiance-Bibliothèque:c'est vrai, et ne pas avoir de message d'avertissement sur le 7u45 vous devez omettre cette propriété.
Grâce Oracle pour une Kobayashi Maru - nous vous aimons.
Je suis la recherche maintenant que certains de mes utilisateurs toujours obtenir ce "mixte signés et non signés, le code d'avertissement" (en raison de LiveConnect appels dans la page web de l'applet) même si j'ai mis de l'Appelant Admissibles à base de Code correctement, et la différence entre ceux qui sont et ceux qui n'en ont pas l'obtenir est de savoir s'ils ont de l'applet .fichier jar activé la mise en cache de l'hôte client. Celles qui permettent de Java pour garder les fichiers temporaires sur le client (c'est à dire, permettre à l'applet .les fichiers jar à être mis en cache) obtenir l'avertissement, et ceux qui tournent à la mise en cache hors tension (en raison de l'applet de mise en cache n'a jamais fonctionné tout à fait à droite) n'obtenez pas l'avertissement. Allez comprendre.
cache-version
attribut dans<object>
, lorsque vous appliquez votre applet. Et puis, vous devez manuellement ou avec l'aide de autobuild, l'augmentation de cette valeur avant chaque version de publication. Ainsi, vous ne serez pas dérangé par le client de l'option "conserver les fichiers temporaires".Sans l'aide de de Confiance-Bibliothèque et mise en scène:
Ne fonctionne pas pour moi, et j'ai toujours le message d'avertissement.
Mise à jour: je l'ai Essayé aussi avec http://... mais ne fonctionne pas non plus.
Update2: Semble encore pire. Je n'ai pas de mise à jour 7u40 (à 7u45) mais la console Java (full debug) montre la "LiveConnect 1.7.45" du texte. Après cela, mon Javascript->Java appels sont bloqués.
Mise à jour 3: j'ai remarqué que mon avertissement indique Candidature et Publisher = INCONNU. Bien que j'ai:
J'ai essayé d'utiliser JDK7u45 au lieu de JDK7u5 j'ai été en utilisant.
Pour désactiver cette "Avertissement de Sécurité" popup et autres popups à l'aide de Java 8 Update 45 JRE.
Remarque: la sécurité popup d'alerte n'a pas été désactivé avec les caractères génériques * et *.com.
Nous avons eu ce problème aussi, - nous étions en train de bâtir avec 1.4.2, sur la théorie que les clients pourraient ne pas être mis à jour JRE plugin. En dépit de la mettre dans le nouveau manifeste des attributs, nous avons encore obtenu les avertissements pop-up dans le 1.7_u45 JRE. Nous avons reconstruit avec la 1.6, et les mises en garde s'en alla.
EDIT: Comme il s'avère, notre application était en train de faire quelque chose de différent si le fichier est dans un répertoire différent, plus précisément, il n'était pas tenter d'accéder à l'applet signé pot se manifeste. Donc, le fait que le fichier a été dans un répertoire différent n'était pas pertinent. Donc ci-dessous l'information n'est pas exacte. J'ai décidé de détail de la vraie raison pour la garde d'une nouvelle question: Comme de Java 7 update 45, on ne peut plus manifeste de recherche de l'information sans le déclenchement d'une alarme?
Malheureusement, la solution donnée par Oracle et d'autres, cliquez ici pour l'obtenir autour de la mise à jour 45 problème ne fonctionne PAS si votre application a besoin d'accéder à des fichiers dans un répertoire différent de celui où l'application est en cours d'exécution à partir.
Avec ma web start application, tout fonctionnait bien et dandy avec la "Confiance-Bibliothèque" attribut qui devait être ajouté pour 7u21. Avec 7u45, le retrait de la "Confiance-Bibliothèque" attribut et en ajoutant tous les attributs supplémentaires parlé dans les autres réponses ne fonctionnera PAS, je reçois le message d'avertissement que vous obtiendriez si vous avez été en 7u21 sans la Confiance de la Bibliothèque de l'attribut (en précisant l'application contient du code signé et non signé).
Il m'a fallu une ÉTERNITÉ pour le comprendre, parce que pour de très raisons inexplicables Oracle a décidé de ne pas imprimer TOUTE indication de ce que le "non signé" le code est dans sa console, même lors de l'exécution au maximum de traçage (niveau 5). Mais, fondamentalement, notre application a besoin d'accéder à un fichier de configuration qui peut être utilisé par l'utilisateur pour configurer les propriétés de l'application (par exemple, le niveau de journalisation de notre application). Ce fichier de configuration est un bon vieux fichier texte. Et nous enregistrons le fichier de configuration dans un répertoire co-situé à l'endroit où l'application s'exécute à partir de: ..\config\app.les propriétés. Nous avons accès à ce fichier en tant que partie intégrante de la jarre de l'init de la routine. C'est là que l'avertissement se produit.
La solution de contournement? Move app.propriétés dans le même répertoire que l'application est en cours d'exécution à partir de (et changez la référence dans le pot juste "app.les propriétés"). Voila, cela fonctionne-plus de mises en garde (aussi longtemps que l'utilisation de ladite base de code attributs). Ce que l'enfer Oracle???
Malheureusement, parce que notre application permet personnalisée des fichiers de configuration sur une base par utilisateur, il n'est pas aussi simple pour nous de mettre juste le fichier de configuration dans l'application de démarrage de l'annuaire, puisque ce n'est PAS personnalisé sur une base par utilisateur, nous ne serait capable de permettre à un utilisateur par machine pour utiliser l'application simultanément.
J'ai été à la recherche sur Java manifeste de la documentation pour voir si il ya une manière que je peux faire le fichier de config du répertoire "coffre-fort", telles que le chargement de ce fichier n'est pas une cause de l'avertissement. La seule chose que je peux penser à est de, soit d'être en mesure d'utiliser le Chemin de Classe attribut ou une combinaison des attributs de l'Extension (http://docs.oracle.com/javase/7/docs/technotes/guides/plugin/developer_guide/extensions.html), cependant, ils semblent tous conçus autour de l'objet de pots, et pas seulement des fichiers normaux...
Des idées? Et depuis qu'Oracle a l'intention de fixer la Confiance-la Bibliothèque de problème de toute façon, est de venir avec un (potentiellement) grandiose solution-solution autour de cette même valeur de l'effort? Grrr....
J'ai trouvé quelque chose d'étrange avec MANIFESTE.MF fichier dans le champ d'application de la dernière Java de problème de sécurité avec de nouveaux attributs "Appelant Admissibles à base de Code".
J'ai eu quelques problèmes, pourquoi ce nouvel attribut n'était pas utile pour moi et a commencé une enquête
(Attention!: elle peut être liée qu'à mon local de la configuration de l'ordinateur - parce que je n'avais jamais vu de tels problèmes sur stackoverlow).
Fichier manifeste avait été mis à jour selon la nouvelle fonctionnalité de sécurité:
et *.pot a été construit, mais sans signature.
Alors, je déballé mon *.fichier jar et regarda dans le dossier META-INF dans le MANIFESTE.MF, où se manifeste source.mf doit être généré.
Et j'ai été gêné par l'absence de la dernière ligne, ça ressemblait à ceci:
J'ai testé ce problème à plusieurs reprises et a trouvé, que la dernière ligne a toujours été échangés à la les espaces.
Donc, si ça sera utile pour quelqu'un, simplement ajouter à la fin de MANIFESTE.MF fichier certains unmeaningful attribut, comme
Codebase: *
, qui sera coupée pendant *.pot de construire.si vous faites un Manifeste fichier de correctif n'oubliez pas de vivre une ligne vide à la fin, sinon ça ne marchera pas.
Par exemple vous pouvez faire un patch comme:
Mais vous avez besoin d'ajouter une ligne vide (dans l'exemple 5 lignes au lieu de quatre!)
Puis l'ajouter à la manifeste: