Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Nikita Kolesnikov  
#1 Оставлено : 10 февраля 2020 г. 10:33:14(UTC)
Nikita Kolesnikov

Статус: Новичок

Группы: Участники
Зарегистрирован: 10.02.2020(UTC)
Сообщений: 3
Российская Федерация

Всем привет!

Встретился с проблемой итеграции плагина в Электорон Electron.
В браузере проблем с плагином не возникает, а в электорне не получается заставить работать плагин.

Плагин добавляю следующим образом
Код:

  BrowserWindow.addExtension('dist/assets/iifchhfnnmpdbibifmljnfjhpififfog');



По логам могу понять что плагин успешно подгружается и начинает работать.
Насколько я понял плагин общается с крипто про по своему протоколу через window.postMessage()
Мне кажется проблема в том, что плагин пытается достучаться по http к электрону, а электрон не слушает http интерфейс.

Может быть кто уже решал проблему интеграции плагина в электорн.
Буду благоодарен за помощь в решении проблемы.
Offline two_oceans  
#2 Оставлено : 10 февраля 2020 г. 11:19:29(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Интересная тема. С Электроном плотно не сталкивался, но схема работы с расширением в обычном браузере несколько сложнее.

Браузер загружает расширение, читает что ему необходимо и при необходимости запускает консольную программу связанную с расширением, обмен происходит через stdin stdout консольной программы. Консольная программа в свою очередь подгружает основную библиотеку плагина, которая уже работает с CryptoAPI. postMesssage расширения (json вид) идет на уровень глубже (background), откуда уже пишется в канал связанный со stdin консольной программы, а ответ из stdout через background отправляется сообщением обратно в расширение. По идее там негде применить http.

Если интересно, то это хорошо продемонстрировано на тестовой страницы подписи КриптоПро (где-то тут был локальный вариант). Сообщения пишутся в console.log и видно что сообщение идет между двумя скриптами. один переводит созданные псевдо-объекты и их методы в json, второй ловит json и передает на канал консольной программы.

Отредактировано пользователем 10 февраля 2020 г. 11:38:03(UTC)  | Причина: Не указана

Offline Nikita Kolesnikov  
#3 Оставлено : 11 февраля 2020 г. 9:15:15(UTC)
Nikita Kolesnikov

Статус: Новичок

Группы: Участники
Зарегистрирован: 10.02.2020(UTC)
Сообщений: 3
Российская Федерация

В коде самого плагина нашел такие строки:
Код:

        var docURL = window.document.URL;
        object_messsage = {destination:"nmcades", requestid: g_request_id, type: "init", url: docURL};


Поэтому решил, что может проблема связана с неправильным docURL.

Думаю браузер не имеет (и не должен иметь из-за проблем безопасности) возможности запускать программы (даже консольные) в расширении.
В "permissions": [ "nativeMessaging" ], используется только nativeMessaging.

Думаю крипто про и плагин общаются между собою через nativeMessaging протокол. И нужно искать в это направлении.


Нашел одну тему связанную с похожей проблемой https://github.com/electron/electron/issues/8692
Попробую что-нибудь накопать.

Отредактировано пользователем 11 февраля 2020 г. 9:16:30(UTC)  | Причина: Не указана

Offline two_oceans  
#4 Оставлено : 11 февраля 2020 г. 9:42:58(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,602
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 393 раз в 366 постах
Цитата:
object_messsage = {destination:"nmcades", requestid: g_request_id, type: "init", url: docURL};
Это как я понимаю, нужно для фильтрации каким сайтам разрешено обращаться к плагину, а не для ответа.
Автор: Nikita Kolesnikov Перейти к цитате
Думаю браузер не имеет (и не должен иметь из-за проблем безопасности) возможности запускать программы (даже консольные) в расширении.
В "permissions": [ "nativeMessaging" ], используется только nativeMessaging.
Разрешение действительно именно такое. Факт, что браузер консольные программы запускает (в операционной системе). Вот как это выглядит с ИЕ и nativeMessaging плагинами. kontur.jpg (121kb) загружен 12 раз(а).В Хроме аналогично, но заснять немного сложнее. Поэтому в Хром встроена "песочница" для них и все такое.

Конечно исполняемый файл находится не в расширении, а устанавливается отдельно на компьютер как плагин. К файлу приложения могут обращаться разные браузеры независимо, каждый создает свой экземпляр запущенного процесса. Возможно проблема в том, что на компьютере не установлена часть-плагин с консольной программой.

Отредактировано пользователем 11 февраля 2020 г. 9:49:21(UTC)  | Причина: Не указана

Offline cemick  
#5 Оставлено : 14 января 2021 г. 19:59:25(UTC)
cemick

Статус: Новичок

Группы: Участники
Зарегистрирован: 14.01.2021(UTC)
Сообщений: 1

Автор: Nikita Kolesnikov Перейти к цитате

Нашел одну тему связанную с похожей проблемой https://github.com/electron/electron/issues/8692
Попробую что-нибудь накопать.


Удалось в итоге побороть побороть проблему?

Offline Nikita Kolesnikov  
#6 Оставлено : 23 сентября 2022 г. 19:12:40(UTC)
Nikita Kolesnikov

Статус: Новичок

Группы: Участники
Зарегистрирован: 10.02.2020(UTC)
Сообщений: 3
Российская Федерация

Проблему не удалось решить. Решили с заказчиком, оставить реализацию на потом. Может быть за это время найдется решение.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.