При выполнении аутентификации на сервере мобильной платформы формируется JWT-токен пользователя API или администратора. В целях повышения безопасности передачи данных, идентифицирующих субъекта, к JWT-токену применяется цифровая подпись с использованием закрытого ключа шифрования.
Алгоритм применения цифровой подписи:
Расчёт контрольной суммы, вычисляемой определенным образом по содержимому передаваемого JWT-токена.
Шифрование контрольной суммы закрытым ключом.
Передача JWT-токена на сервер мобильной платформы с зашифрованной контрольной суммой.
Получение данных и расшифровка контрольной суммы открытым ключом.
Расчёт контрольной суммы полученного JWT-токена.
Сравнение контрольных сумм, рассчитанных в шагах 4 и 5.
Цифровая подпись с закрытым ключом шифрования позволяет выявить несанкционированное изменение содержимого JWT-токена и предотвратить доступ злоумышленника к запрашиваемым данным. Контрольная сумма меняется при любом изменении JWT-токена.
По умолчанию на сервере мобильной платформы или в кластере, развёрнутом на основе Kubernetes, Deckhouse или OKD/OCP, применяется одинаковый закрытый ключ шифрования. При необходимости можно изменить закрытый ключ шифрования.
Для изменения закрытого ключа шифрования JWT-токена:
Выполните одно из действий в зависимости от использования отказоустойчивого кластера:
на сервере мобильной платформы откройте файл .env и задайте новый сгенерированный закрытый ключ шифрования в переменной «HH_SECRET_KEY»;
в кластере задайте новый сгенерированный закрытый ключ шифрования в параметре django.deployment.secretKey:
--set django.deployment.secretKey=<закрытый ключ шифрования>
Перезапустите мобильную платформу.
После выполнения действий будет изменен закрытый ключ шифрования JWT-токена, текущие JWT-токены субъектов будут невалидны. Для формирования валидных JWT-токенов выполните повторную аутентификацию.
См. также: