1

javax.smartcardio を使用してクライアントのスマートカードと通信しようとしています。アプレットは、イントラネット内のユーザー専用です。Eclipse内でデバッグすると、アプレットは正常に動作します。

次のHTMLコードを使用してブラウザ(IE9とChromeを試しました)で開くと:

<body>
<!-- ... -->
<script src="https://www.java.com/js/deployJava.js"></script>
<script> 
    var attributes = {
        code:'test.TestClass',  width:300, height:300, scriptable:true} ; 
    var parameters = {jnlp_href: 'TestJNLP.jnlp'} ; 
    deployJava.runApplet(attributes, parameters, '1.7'); 
</script>
<!-- ... -->
</body>

次の例外が発生します: AccessControlException

Java コンソールには、次の 3 行のみが表示されます。 file:/C:/AppletTestSite/TestApplet.jar]: updateAvailable=true,lastModified=Wed Jan 29 08:40:39 CET 2014,length=6684

私がすでに試したこと:

- doPrivilegedを使用:

public void init() {
    try {
        AccessController
                .doPrivileged(new PrivilegedExceptionAction<Integer>() {
                    public Integer run() {
                        ReaderInit(); //<------
                        return null;
                    }
                });
    } catch (PrivilegedActionException e) {
        // catch block
        e.printStackTrace();
    }

}

-jnlp ファイルへのアクセス許可の追加:

<security>
  <all-permissions/>
</security>

- 次の行をマニフェストに追加:

Permissions: all-permissions

- keytool&jarsigner で jar ファイルに自己署名

C:\Program Files\Java\jdk1.7.0_51\bin>jarsigner -verify C:\AppletTestSite\TestApplet.jar
jar verified.

- Java コントロール パネルで、セキュリティ レベルを [中] に設定し、サイトの URL を [例外サイト リスト] に追加します。

それとも、(1.7.0_51 の更新以降) 公的に信頼された CA なしでスマートカードにアクセスすることはできなくなったのでしょうか?

アプレットのユーザーごとにポリシー ファイルを変更することは避けたいと考えています。

4

0 に答える 0