Доступ к считывателю смарт-карт из веб-браузера? - PullRequest
22 голосов
/ 19 июля 2011

Можно ли получить доступ к устройству чтения смарт-карт, подключенному к компьютеру, через веб-браузер, работающий на той же машине, то есть из ActionScript, JavaScript или любого другого скрипта, работающего на нем?

Например, я прочитал кое-что о классе flash.external.ExternalInterface в ActionScript.Можно ли использовать его для доступа к устройству чтения смарт-карт или песочница непроницаема?

Ответы [ 7 ]

9 голосов
/ 09 января 2012

В: возможно ли получить доступ к устройству чтения смарт-карт, подключенному к компьютеру, из веб-браузера, работающего на той же машине?

A: Да, это возможно. Я смог сделать это с помощью подписанного JAVA-апплета. Java-апплет должен быть подписан, так как он потребует от пользователя разрешения на доступ к системным файлам / оборудованию (так же, как разрешение апплету писать / редактировать / удалять текстовый файл для вас).

Почему ява? Устройство чтения смарт-карт, которое я использовал, уже имеет JAVA API, и в нем также есть примеры доступа к нему с помощью Java. Но примеры закодированы в разгаре. (как отдельное настольное приложение) То, что я сделал, это просто перенес Java-код свинга на апплет в браузере. Я успешно использовал этот апплет, чтобы войти в систему и выйти на веб-сайт / веб-приложение, требуя смарт-карты, имя пользователя и пароль. Я бы сказал, довольно безопасно.

Исходный код? Как бы я не хотел делиться этим, но я обязан заключить контракт с компанией, чтобы не делиться кодом. Просто найдите образец доступа к смарт-карте с использованием Java и просто перенесите его на апплет (для Интернета)

Надеюсь, это поможет

5 голосов
/ 03 июня 2013

Вы также можете взглянуть на этот собственный бета-плагин:

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

Это кросс-браузерный / кросс-платформенный плагин, основанный на фреймворке Firebreath, раскрывающий подмножествоPCSC API.

4 голосов
/ 30 января 2015

Когда это предложение " Смарт-карты в браузерах " будет реализовано, мы также сможем использовать JavaScript для этого.

3 голосов
/ 21 декабря 2015

Я работал над тем же примерно в 2012 году, тогда я работал над предыдущей работой, которая предоставляла Java-апплет.

В настоящее время [декабрь 2015 г.] использование Java-апплета становится еще менее целесообразным из-за «недавних» проблем с безопасностью, а также после прекращения поддержки Java-апплетов, а также прекращается использование собственных технологий плагинов..

Независимо от текущей полезности Java-апплета, учитывая ответ @Glen Allen, я не связан контрактом, и вот пример открытого исходного кода примера Applet: https://github.com/ist-dsi/signature

Он был построен на дипломной работе и производит документы в следующем формате: http://www.w3.org/TR/xmldsig-core/ Более подробную информацию о причинах можно найти в аннотации этой диссертации MsC https://fenix.tecnico.ulisboa.pt/downloadFile/395139415358/resumo.pdf (авторхотя он и лучше инженер, чем писатель, но было бы неплохо начать, если вы хотите узнать о состоянии дел, хотя оно и старое)

Есть больше требований, что в ретроспективе и безЗнание сделало странный выбор технологий в коде, который я вам здесь привожу, просто пренебрегайте этой частью:)

Один из ответов hНамекаем на PKCS_11 и открытые стандарты.Возможно, хитрость заключается в драйвере устройства чтения смарт-карт, который автоматически настраивает инфраструктуру сертификатов на стороне клиента, но я помню, что мне приходилось проходить через много скачков, чтобы настроить смарт-карту моей идентификационной карты с помощью устройства чтения в Mac OS X с Chrome [AFAIKбыло непросто настроить устройство чтения смарт-карт с помощью хранилища ключей Apple, и, возможно, в то время было непросто настроить Chrome так, чтобы он использовал аутентификацию клиента и запрашивал доступ к хранилищу ключей Apple].

Илиможет быть, NFC + SmartCard и мобильное приложение будут подходить для этого.

Это просто такая трата, когда целые страны с идентификаторами со SmartCards, множество правительственных служб уже имеют веб-приложения и нет простого способасоедините два.

Приветствия.

2 голосов
/ 24 февраля 2012

Вы можете использовать подписанный Java-апплет для доступа к читателю. Подписанным апплетам разрешен доступ к периферийным устройствам, доступ к считывателю смарт-карт можно получить через Java Crypto API.

Надеюсь, это поможет.

0 голосов
/ 19 июля 2011

Этого нельзя добиться с помощью ActionScript / Flash, если вы придерживаетесь браузера.

Adobe AIR может это сделать, но тогда вам придется создать приложение, которое должен сделать пользовательустановить перед использованием.

Как-то так (AIR): http://cookbooks.adobe.com/post_Mass_Storage_Device_Detection_AIR_2_0-16747.html

0 голосов
/ 19 июля 2011

Если вы можете получить доступ к смарт-карте в вашей файловой системе, например, когда USB-накопитель подключен и выглядит как отдельный диск, тогда вы можете просто использовать flash.net.FileReference.

...