title: Java applet security model incompatibility between OS X JREs 6 and 7: any workaround?
body: <p>I'm the author of <a href="http://www.wordle.net/" rel="nofollow">Wordle</a>, one of the few surviving Java applets in the wild.</p>
  
  <p>Recently, I received user reports of warnings that my (signed) applet would soon be blackballed by the JRE because it did not explicitly specify a "Permissions" attribute in its manifest. So, now the MANIFEST.MF <a href="https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias" rel="nofollow">correctly</a> specifies</p>
  
  <pre><code>    Permissions: sandbox
  </code></pre>
  
  <p>and the <code>&lt;applet&gt;</code> tag includes the magical</p>
  
  <pre><code>    &lt;param name="permissions" value="sandbox" /&gt;
  </code></pre>
  
  <p>param, as <a href="http://docs.oracle.com/javase/tutorial/deployment/applet/html.html" rel="nofollow">documented</a>.</p>
  
  <p>Now, folks who have bent over backwards to install the OS X JRE 7 can run Wordle with no difficulty, but folks (like many school IT admins) stuck on JRE 6 cannot run the applet at all; they get </p>
  
  <pre><code>java.lang.SecurityException: JAR manifest requested to run in sandbox only:
  http://wordle.appspot.com/j/v1390/wordle.jar
      at com.sun.deploy.security.DeployManifestChecker.verify(DeployManifestChecker.java:106)
      at com.sun.deploy.security.DeployManifestChecker.verify(DeployManifestChecker.java:84)
      at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(TrustDecider.java:319)
      at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(TrustDecider.java:280)
      at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(TrustDecider.java:270)
      at sun.plugin2.applet.Plugin2Manager.isAppletSigned(Plugin2Manager.java:3289)
      at sun.plugin2.applet.Plugin2Manager.createApplet(Plugin2Manager.java:3207)
      at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Plugin2Manager.java:1536)
      at java.lang.Thread.run(Thread.java:695)`
  </code></pre>
  
  <p>The symptom suggests that the Java 6 plugin assumes that the signed applet should run in <code>all-permissions</code> mode, and thinks that the request for <code>sandbox</code> in the manifest is an error. It ignores, in other words, the <code>permissions</code> param in the <code>applet</code> tag.</p>
  
  <p>Does anyone know of any way for me to help my users other than setting the applet to run in <code>all-permissions</code> mode? I'd prefer to stay sandboxed, both because I don't want people to be afraid to use Wordle, and because I don't want to create an attack surface.</p>