Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Общая информация

Плагин Рутокен Web — это специальный плагин для работы с устройством Рутокен Web. Разработка данного плагина была прекращена в 2016 году.

Рутокен Плагин — это плагин для работы с основной линейкой устройств Рутокен, включая ЭЦП 2.0, PINPad, ЭЦП PKI. В настоящее время активно ведется его разработка. Плагин рекомендован для всех устройств Рутокен.

В данной инструкции продемонстрирован процесс перехода с плагина Рутокен Web на Рутокен Плагин. Это возможно в том случае, если у вас уже встроена поддержка  устройства Рутокен Web, используется плагин Рутокен Web и серверная часть работает с данными, сгенерированными плагином. 

Предложенная схема требует минимальных изменений в клиентском коде и не затрагивает серверный код.

В результате описанных процедур вы получите возможность использовать всю линейку продуктов Рутокен без дополнительных материальных и трудовых затрат.

Для примера будем использовать демонстрационный сайт:

http://php.rutokenweb.ru/

Код серверной части сайта написан на PHP. Для других языков алгоритм будет тот же.

Схема аутентификации с использованием Рутокен Web:

  1. Зарегистрированный на сайте клиент генерирует ключевую пару и сохраняет ее на сайте.
  2. При авторизации на сайте запрашиваются случайные данные для подписи. Они сохраняются на сервере и отправляются клиенту.
  3. Клиент получает данные, генерирует "соль", которая добавляется к данным. Результат подписывается с использованием сгенерированной в п. 1 ключевой пары и вместе с "солью" отправляется на сервер для проверки.
  4. Сервер производит такую же процедуру с "солью" и сохраненными в п. 2 данными. Проверяется корректность подписи и принимается решение об успешности процесса аутентификации.

В этой схеме нет сложностей, связанных с сертификатами. В процессе ее реализации происходит только подпись данных и проверка корректности самой подписи.

Формирование электронной подписи производится по алгоритму ГОСТ Р 34.10-2001.

Схема миграции с плагина Рутокен Web на Рутокен Плагин

  1. Установим Рутокен Плагин. Актуальная версия плагина доступна по ссылке:
    https://www.rutoken.ru/support/download/rutoken-plugin/
  2. Изменим загрузчик плагина. Для этого заменим на страницах или в системе сборки скрипт rutokenweb.js на rutoken.js:
    https://www.npmjs.com/package/rutoken
    Оба эти скрипта используют Promise.
  3. Если у вас установлен и работает rutokenweb.js, то зависимости должны быть. 
  4. Если rutokenweb.js не работает, то следует установить скрипт для работы с промисами. Для этого перейдите по ссылке:
    https://github.com/jakearchibald/es6-promise
  5. Используйте модуль проверки совместимости плагина и браузера:
    https://www.npmjs.com/package/rutoken-browser-check
    Он дает возможность локализовать проблемы при инициализации.
    У данного скрипта есть зависимость:
    https://www.npmjs.com/package/bowser
  6. Изменим логику инициализации работы плагина. Для этого:
    - вынесем отдельный файл boot.js, чтобы не копировать;
    - подключим его на всех страницах, где это необходимо;
    - удалим лишние переменные;
    - удалим функцию token_refresh из подписи на onload странице.
    В общем случае, плагин получается в финальной resolve цепочке промисов, в которой мы передаем его конструктору нашей обертки вместе с методом получения PIN-кода. Этот метод нужен, чтобы эмулировать отображение окна со списком логинов и обработать выбор корректного id. Возвращается промис с id устройства и PIN-кодом, введенным пользователем. Все ошибки инициализации прилетают в reject промиса. Ошибки от плагина прилетают  другие, поэтому то место, где они обрабатывались необходимо изменить.
  7. Используйте обертку над плагином rtwToCrypto.js. Код обертки:
    https://github.com/blade-runner/rutokenweb-to-plugin
    Подменяем методы Рутокен Web на необходимые нам. Таким образом сигнатуры сохраняются и ваш код работает, но с новым плагином и всеми устройствами Рутокен.

     

Список методов, переопределенных оберткой:

rtwIsTokenPresentAndOK

rtwGetNumberOfContainers

rtwGetContainerName

rtwSign

rtwGenKeyPair

 

 

 

 

  • No labels