Skip to content
/ TOKENS Public

Автоматизация подготовки токенов перед записью ЭЦП

Notifications You must be signed in to change notification settings

kom-ae/TOKENS

Repository files navigation

Python Flask sqlalchemy sqlite

TOKENS

Подготавливает токен перед записью закрытого контейнера и сертификата ключа проверки электронной подписи.

Цель проекта

Создать единый интерфейс для форматирования токенов разных производителей. Сократить время на подготовку токена.

Описание

Взаимодействие с приложением реализовано через веб‑интерфейс. При форматировании используется официальная консольная утилита производителя Rutoken и библиотека драйвера токена JaCarta т.к. консольная утилита для данного токена отсутствует. Реализовано форматирование для следующих моделей токенов:

  • Rutoken S;
  • Rutoken lite;
  • Rutoken ЭЦП;
  • Jakarta PKI.

Для форматирования токенов других моделей или иных производителей необходимо расширить базовый класс Token, реализовав в нём метод format() с логикой форматирования, специфичной для конкретного токена. Использование официальной консольной утилиты при форматировании Rutoken позволяет задать параметры политики PIN‑кода. Политики PIN‑кода, а также другие настройки, задаются в файле constants.py, расположенном в корне проекта. Заполнение поля label токена возможно как вручную, так и автоматически — при выборе пользователя. Для этого реализована загрузка данных о пользователях из LDAP. Чтобы сократить время поиска пользователей и количество запросов к LDAP, загруженные данные сохраняются в локальной базе SQLite. Для данного проекта использование SQLite является оптимальным решением. В проекте реализован ORM на базе SQLAlchemy, что при необходимости позволяет легко перейти на другую СУБД.

На текущем этапе веб‑интерфейс выполнен в виде SPA (Single‑Page Application). Планируется доработка приложения для взаимодействия по API с «Центром регистрации» с целью автоматизации выпуска сертификатов и их записи на токен.

Используемый стек.

  • Python 3.12
  • Flask 3.1
  • PyKCS11
  • SQLAlchemy 2.0
  • SQLite
  • Bootstrap
  • JavaScript
  • jQuery
  • AJAX

Запуск проекта

Проект запускается на ПК к которому будут подключаться токены для форматирования. Проект разрабатывался и тестировался для работы на ПК, включенном в домен под управлением MS Active Directory, с ОС Windows. Авторизация при подключении к LDAP серверу настроена на использование билетов kerberos. При работе с ПК подключенного к домену под управлением MS Active Directory и авторизации на ПК под доменной учетной записью, авторизация на LDAP сервере проходит в прозрачном режиме. Также для форматирования токенов Rutoken используются официальные консольные утилиты работающие под ОС Windows. Остальные используемые компоненты кросплатформенные. Для форматирования Runtoken под ОС Linux/macOS необходимо в соответствующих классах (Rutoken, RutokenS, RutokenECP) в методе format() указать логику форматирования как в классе JaCartaLaser, с применением модуля PyKCS11. Для отправки запроса о пользователях к LDAP серверу, при работе на ПК не входящем в домен, необходимо перенастроить авторизацию подключения к LDAP серверу.


Клонируйте репозиторий:

git clone https://github.com/kom-ae/TOKENS.git

Перейдите в директорию TOKENS:

cd TOKENS

Cоздайте и активируйте виртуальное окружение:

# Для Windows:
python -m venv venv
source venv/Scripts/activate

# Для Linux/macOS:
python3 -m venv venv
source venv/bin/activate

Обновите менеджер пакетов pip:

# Для Windows:
python -m pip install --upgrade pip

# Для Linux/macOS:
python3 -m pip install --upgrade pip 

Установите зависимости:

pip install -r requirements.txt

Создайте .env файл копированием:

cp .env_example .env

Задайте значения в .env файле, пример:

FLASK_APP=tokens_app
FLASK_DEBUG=0
PIN_ADMIN=44444  # Пин-код администратора устанавливаемый при форматировании
SECRET_KEY=SECRET_KEY
SQLALCHEMY_DATABASE_URI=sqlite:///sqlite.db  # Строка для подключения к БД
LDAP_SEARCH_BASE='DC=example,DC=com'  # Базовая директория для поиска пользователей на LDAP сервере

Примените миграции:

flask db upgrade

Запустите проект:

flask run

Страница проекта будет доступна по адресу http://127.0.0.1/5000


Автор проекта: Александр Комаров

About

Автоматизация подготовки токенов перед записью ЭЦП

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published