Проблема SecureCookiePermission - апплет не работает с последним обновлением Java 6 29 - PullRequest
0 голосов
/ 08 ноября 2011

На нашем веб-сайте мы используем апплет, который не работает после обновления до Java 6 Update 29. Апплет должен связываться с сервером для хранения данных в базе данных.Апплеты прекрасно работают в более низких версиях Java (обновление 22, 26 или 27), и невозможно попросить наших клиентов понизить версию Java.Я нашел некоторые ошибки в консоли Java, и я думаю, что Java не может получить доступ / создать cookie или сеанс (какая-то проблема с разрешениями).Кто-нибудь может мне помочь с этим вопросом?

Спасибо!

network: Connecting http://www.example.com:80/ with proxy=DIRECT
java.security.AccessControlException: access denied (com.sun.deploy.security.SecureCookiePermission origin.http://www.example.com:80)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at com.sun.deploy.net.cookie.DeployCookieSelector.canServeCookies(Unknown Source)
    at com.sun.deploy.net.cookie.DeployCookieSelector.get(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.setCookieHeader(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.writeRequests(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at ATutorApiAdapterApplet.ATutorCommit(ATutorApiAdapterApplet.java)
    at ATutorApiAdapterApplet.LMSCommit(ATutorApiAdapterApplet.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSInvoke.invoke(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source)
    at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source)
    at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
network: Server http://www.example.com/write.php requesting to set-cookie with "Coyote-2-8b928cf0=a000200:0; domain=example.com; path=/"
network: Server http://www.example.com/write.php requesting to set-cookie with "SESSION=1v1md9bphfvgrqal38vg5quba1; path=/"
ATutor cmi storage failed.
java.security.AccessControlException: access denied (java.util.PropertyPermission http.strictPostRedirect read)

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Это ошибка, которая должна быть исправлена ​​в обновлении 30

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7102914

Однако я обновил предварительную версию обновления 30 и все еще имею ту же проблему.ЕДИНСТВЕННОЕ решение (среди многих вещей, которые я пробовал) состоит в том, чтобы обернуть любые вызовы для подключения к серверу в блок AccessController.doPrivileged, используя AllPermission.

Permissions permissions = new Permissions();
permissions.add(new AllPermission());
AccessControlContext context = new AccessControlContext(
        new ProtectionDomain[]{new ProtectionDomain(null, permissions)});

AccessController.doPrivileged(new PrivilegedAction<Object>()
    {
        @Override
        public Object run()
        {
            URL connecting code
        }
    }, context);
1 голос
/ 08 ноября 2011

Эмм ... Я не совсем уверен, но строка как

java.security.AccessControlException: доступ запрещен (com.sun.deploy.security.SecureCookiePermission origin. http://www.example.com:80)

возможно, говорит, что апплет пытается получить доступ к своим источникам как "куки" или что-то с неправильными настройками политики куки, или ваш апплет не подписан.

... потому что примечание о куки говорит как

Чтобы получить доступ к файлам cookie, необходимо подписать JAR-файл RIA. Чтобы узнать, как подписывать файлы JAR, см. Документацию для инструмента jarsigner.

Для просмотра более подробной информации выможет читать это и это

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...