Статус: Новичок
Группы: Участники
Зарегистрирован: 08.11.2016(UTC) Сообщений: 5 Откуда: Ижевск Сказал(а) «Спасибо»: 3 раз
|
У нас имеется spa приложение, в котором выполняется подписание документов в браузере через плагин "КриптоПро ЭЦП Browser plug-in" Для того, чтобы многократно не вводить пароль используется свойство CachePin объекта PrivateKey согласно примеру ( https://docs.cryptopro.r...les-private-key-cachepin ) Однако, в целях безопасности, чтобы пароль не оставался закешированным неопределенно долгое количество времени (у нас spa, поэтому сессия работы пользователя по времени может быть достаточно долгой, когда страница браузера не перезагружается), поэтому через некоторое время таймаута выполняется очистка созданных крипто-про объектов - с помощью вызова функции cadesplugin.ReleasePluginObjects() (согласно https://docs.cryptopro.r...es/plugin/plugin-methods ), что позволяет сбросить кеш пароля и в следующий раз при подписании затребовать пароль повторно. Но в случае, когда серт-ты находятся на физическом носителе (например, рутокене), когда пароль закеширован путем установки в true св-ва CachePin объекта PrivateKey, то в этом случае, даже если физически токен извлечен, то подписания выполняются без запроса пароля, используя закешированный. Вопрос:Существует ли возможность средствами "КриптоПро ЭЦП Browser plug-in" отслеживать физическое присутствие токена? Как-то проверять хотя бы в режиме пуллинга его статус (подключен/извлечен)? На форуме было найдено решение в рамках "толстого" клиента - https://www.cryptopro.ru....aspx?g=posts&t=7410 . Но нет ли возможности сделать то же самое только в браузере? Конечно можно использовать браузерный плагин для рутокена и через предоставляемое им апи проверять его доступность, но хотелось бы более универсальное решение, не зависящее от конкретного вендора токена и реализуемое на базе плагина криптопро, если это возможно, конечно. Заранее спасибо за ответы и помощь) Отредактировано пользователем 24 марта 2021 г. 12:21:49(UTC)
| Причина: Не указана
|
|
|
|
Статус: Администратор
Группы: Участники
Зарегистрирован: 01.03.2017(UTC) Сообщений: 95 Откуда: Москва Сказал(а) «Спасибо»: 4 раз Поблагодарили: 29 раз в 20 постах
|
|
1 пользователь поблагодарил Ситдиков Денис за этот пост.
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 08.11.2016(UTC) Сообщений: 5 Откуда: Ижевск Сказал(а) «Спасибо»: 3 раз
|
Ситдиков Денис
, большое спасибо) Пока остановились на следующем варианте - ежесекундная проверка количества ридеров, если их кол-во изменилось, что считаем, что токен был вставлен/извлечен: Асинхронная версия: Код:
var about = yield cadesplugin.CreateObjectAsync("CAdESCOM.About");
//yield about.MediaFilter(cadesplugin.MEDIA_TYPE_SCARD); // Тут падает с ошибкой {message: "Указан неправильный тип. (0x8009000A)", requestid: 5, type: "error"}
var providerName = yield about.CSPName();
var cCspInformation = yield cadesplugin.CreateObjectAsync("X509Enrollment.CCspInformation");
yield cCspInformation.InitializeFromName(providerName);
var readers = yield cCspInformation.Readers;
var count = yield readers.Count;
Синхронная версия: Код:
var about = cadesplugin.CreateObject("CAdESCOM.About");
//about.MediaFilter(0x8); // Тут падает с ошибкой
var cCspInformation = cadesplugin.CreateObject("X509Enrollment.CCspInformation");
var providerName = about.CSPName();
cCspInformation.InitializeFromName(providerName);
var count = cCspInformation.Readers.Count;
Несмотря на то, что падает при установке фильтра about.MediaFilter(cadesplugin.MEDIA_TYPE_SCARD), повторюсь, что решения, приведенного выше в принципе оказалось достаточно. Благодарю)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close