ユーザーが個人証明書を使用して文書に署名できるアプレットがあります。アプレットはすでに署名されていますが、キーストアをロードしようとすると、sunMSCAPIに関連するアクセス拒否エラーが発生します。これは、次のコード行によって引き起こされます:私は、アプレットの署名を理解して何からアプレット内でMSCAPIを使用してキーストアをロードする方法
store = KeyStore.getInstance("Windows-MY");
store.load(null, null);
、私は(編集ポリシーファイルなど)を介してジャンプする必要が署名プロセスの後には、追加の手順はありません。私はすべてのアプレット機能を以下の範囲内でラップしようとしました:
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
etc...
しかし、それは助けになりませんでした。私は、sunMSCAPIがJDK 6でのみ利用可能であるという様々なフォーラムでいくつかのコメントを見つけました...私は持っています。私はアイデアがなくなり、どんな助けもありがたいです。潜在的な援助のために
は、ここにアクセス拒否エラーのスタックトレースです:
java.security.AccessControlException: access denied (java.security.SecurityPermission authProvider.SunMSCAPI)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.security.mscapi.KeyStore.engineLoad(KeyStore.java:736)
at sun.security.mscapi.KeyStore$MY.engineLoad(KeyStore.java:43)
at java.security.KeyStore.load(Unknown Source)
at com.bloop.signature.PKCS11.loadKeyStore(PKCS11.java:42)
at com.bloop.signature.PKCS11.sign(PKCS11.java:29)
at com.bloop.signature.applet.SignApplet.signDocument(SignApplet.java:103)
at com.bloop.signature.applet.SignApplet.access$200(SignApplet.java:19)
at com.bloop.signature.applet.SignApplet$1.run(SignApplet.java:64)
at java.lang.Thread.run(Unknown Source)