web-dev-qa-db-ja.com

Webブラウザーからのスマートカードリーダーへのアクセス

同じマシンで実行されているWebブラウザーから、つまりActionScript、JavaScript、またはそこで実行されているスクリプトから、コンピューターに接続されたスマートカードリーダーにアクセスすることはできますか?

たとえば、flash.external.ExternalInterface ActionScriptのクラス。スマートカードリーダーへのアクセスに使用できますか、それともサンドボックスを通過できませんか?

23
jlnme

Q:同じマシンで実行されているWebブラウザーからコンピューターに接続されているスマートカードリーダーにアクセスできますか?

A:はい、可能です。署名済みのJavaアプレットを使用してこれを行うことができました。Javaアプレットはシステムファイルへのアクセス許可をユーザーに付与する必要があるため、署名が必要です/ hardware(アプレットにテキストファイルを書き込み/編集/削除させるのと同じ)。

なぜjava?私が使用したスマートカードリーダーにはすでにJava API、Javaを使用してアクセスする例もあります。しかし、例はswingでコーディングされています。(スタンドアロンのデスクトップアプリケーションのように) Java Swingコードをブラウザのアプレットに移植するだけです。このアプレットを使用して、スマートカード、ユーザー名、およびパスワードを要求することにより、ログインとWebサイト/ Webアプリケーションへのログアウトに成功しました。非常に安全なI言うでしょう。

ソースコード?共有したいのですが、コードを共有しないという会社の契約に縛られています。 Javaを使用してサンプルのスマートカードアクセスを見つけ、それをアプレット(Web用)に移植するだけです。

これが役に立てば幸い

9
Glenn S

このベータネイティブプラグインもご覧ください。

https://github.com/ubinity/webpcsc-firebreath

これは、Firebreathフレームワークに基づくクロスブラウザ/クロスプラットフォームプラグインであり、PCSC APIのサブセットを公開しています。

5
cslashm

この提案 " ブラウザのスマートカード "が実装されると、JavaScriptを使用することもできます。

私は2012年頃と同じように作業しましたが、Javaアプレットを提供していた以前の作業に加えて作業しました。

今日[2015年12月]、「最近の」セキュリティ問題のため、Javaアプレットとネイティブプラグインテクノロジーのサポートが廃止されたため、Javaアプレットを使用することはあまり意味がありません。同様に廃止されています。

Javaアプレットの現在の有用性に関係なく、@ Glen Allenの答えを拾い上げて、私は契約に拘束されません。ここに、サンプルアプレットのオープンソースコードがあります。 https: //github.com/ist-dsi/signature

それは論文研究に基づいて構築され、次の形式でドキュメントを生成します。 http://www.w3.org/TR/xmldsig-core/ 理由の詳細は、そのMsC論文 https://fenix.tecnico.ulisboa.pt/downloadFile/395139415358/resumo.pdf (ただし、著者は論文執筆者より優れたエンジニアですが、開始するには良い点かもしれません古いものの最新のものを知りたい場合)

後から、知らないうちに、私がここで提供するコードでテクノロジーの奇妙な選択を行ったという要件がありますが、その部分は無視してください:)

ここでの答えの1つは、PKCS_11とオープンスタンダードをほのめかしました。多分トリックは、クライアント側で証明書インフラストラクチャを自動的にセットアップするスマートカードリーダードライバーにあるかもしれませんが、IDカードのスマートカードをChrome [AFAIKスマートカードリーダーをAppleのキーストアでセットアップするのは簡単ではありませんでした。クライアント認証を使用してアクセスを要求するようにChromeを設定することも、おそらくそれほど簡単ではありませんでした。 Appleのキーストアへ]。

または、NFC +スマートカードとモバイルアプリが適しています。

スマートカード付きのID、すでにWebアプリケーションを備えた多くの政府サービスがあり、2つを簡単に接続する方法がないため、国全体が無駄になっています。

乾杯。

3
João Antunes

署名済みJavaアプレットを使用してリーダーにアクセスできます。署名付きアプレットはハードウェア周辺機器へのアクセスを許可され、スマートカードリーダーにはJava Crypto APIを介してアクセスできます。

お役に立てれば。

2
gyimi

ブラウザにこだわる必要がある場合、ActionScript/Flashでこれを実現することはできません。

Adobe AIRはこれを行うことができますが、その場合、ユーザーが使用する前にユーザーがインストールする必要があるアプリケーションを構築する必要があります。

次のようなもの(AIR): http://cookbooks.Adobe.com/post_Mass_Storage_Device_Detection_AIR_2_0-16747.html

0
pkyeck

USBドライブが接続されて別のディスクとして表示される場合など、ファイルシステム上のスマートカードにアクセスできる場合は、単純に flash.net.FileReference

0
TheDarkIn1978