Каковы возможные архитектуры на стороне клиента для доступа к локальной смарт-карте из обычного браузера (подключенного к серверу через http (s)), предпочтительно из Javascript, с минимальными трудностями при установке для конечного пользователя? Сервер должен иметь возможность, по крайней мере, выдавать APDU по своему выбору на карту (или, возможно, делегировать часть этого коду на стороне клиента, который он генерирует). Я предполагаю наличие на стороне клиента рабочего стека ПК /SC, в комплекте со считывателем смарт-карт. Это разумное предположение по крайней мере для Windows, начиная с XP, современных OS X и Unixes.
До сих пор я определил следующие варианты:
- Некоторые пользовательские ActiveX. То, что использует мое существующее приложение (мы разработали его собственными силами), развертывание довольно просто для клиентов с IE, когда они получают разрешение на установку ActiveX, но оно не соответствует требованию "универсального браузера".
Обновление: ActiveX поддерживается в основном устаревшим IE, включая IE11; но не по краю. - Некоторые расширения для ПК /SC-браузеров используют Netscape Plugin API, который выглядит как плавное расширение вышеперечисленного. Единственный готовый продукт, который я нашел, - это SConnect, но он кажется едва живым, его документация по API (веб-архив) более не доступна официально и имеет тесные связи с конкретным поставщиком смарт-карт. Принцип может быть хорошим, но создание такого плагина для каждой платформы было бы большой работой.
Обновление: поддержка NPAPI прекращена многими браузерами, включая Chrome и Firefox. - Java-апплет, работающий поверх Oracle JVM (1.) 6 или выше, который поставляется с
javax.smartcardio
. Это хорошо с функциональной точки зрения, хорошо документировано, я могу жить с несколькими известными ошибками, но я боюсь непреодолимой нисходящей спирали в отношении принятия расширения Java-as-a-browser-extension.
Любая другая идея?
Кроме того: существует ли какой-либо способ предотвратить злоупотребление интерфейсом ПК /SC, который имеет браузер, мошенническим сервером (например, представить 3 неправильных ПИН-кода для блокировки карты, просто из-за ее гнусности или совершения еще более злых дел).