1

MS CryptoAPI と PKCS#11 (プロバイダーを .dll に登録) を使用して、Java アプレット (組み込み) で SmartCard にアクセスできます。両方を使用できますが、現在、すべてのキーボード/Windows バージョンをより簡単にサポートするために、CryptoAPI を使用しています。

keystore = KeyStore.getInstance("Windows-MY");
keystore.load(null,null);

Javascript を使用して Java と通信し、開発中の Web アプリケーションでいくつかの操作に署名しています。

デフォルトのユースケースはまさに私が必要としているものです:

  • キーストアを取得/ロードします
  • 何かに署名しようとすると、PIN が要求され、導入されると、セッションが終了するまで記憶されます (SmartCard またはキャッシュ タイムアウトを抽出するとき)。

問題は次のとおりです。これは組み込みアプレットです。WebページAで何かに署名してからWebページBに移動すると(リンクまたはリダイレクトなどを介して)、アプレットが破棄/作成され(JVMと同様)、セッションが失われるため、導入する必要があります再びPIN。もちろん、実際のWebページを離れたりリロードしたりしないと、これは起こりません。

質問: セッション/アプレット/JVM をプログラムで再利用する方法はありますか? または、この問題を回避できる方法でキーストアをロードしますか?

私がすでに知っている可能な回避策:

  • フリーフローティングアプレット。できません。GUI がなく、JS と通信する必要があります...
  • フレームセット/iframe 内の Web。汚れた。
  • Web を Ajax 化します (1 ページのみ + Ajax でのすべての操作 + ある種の履歴 JS プラグインまたは PushState)。これは私が気に入っているソリューションですが、リファクタリングが必要です。
4

1 に答える 1

1

私はまったく別の方法でそれを行うことになりました: 署名用のクライアント デスクトップ アプリを作成します。このアプリは、すべてのデスクトップ クライアントにインストールされます (企業環境なので、これで問題ありません)。この新しいアプリは、HttpListener. javascript (jsonp) 経由で Web から接続し、署名する文字列を送信すると、結果が署名された js コールバックが返されます。

  • セッションが失われないため、PIN が記憶されるようになりました。
  • したがって、Java は必要ありません。
于 2013-03-04T14:45:58.143 に答える