Page tree

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

Compare with Current View Page History

« Previous Version 9 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