Задача [EDI4]: API для регистрации и авторизации по ЭЦП

Формулировка проблемы:

Задача проходит в рамках реализации прототипа системы EDI на базе платформы ARTA Synergy.

Необходимо API для авторизации и регистрации пользователей с использованием ЭЦП.

API будет использоваться в JavaScript-компонентах для авторизации и регистрации (см. EDI3), в связке c агентом Synergy (см. EDI2).

Решение:

Необходимо реализовать API, необходимое и достаточное для осуществления регистрации и авторизации по ЭЦП

Новые методы API не должны являться публичными и входить в список API, используемых при написании внешних модулей.

Базовый URL для всех новых API - rest/sign, метод запроса - POST.

Для новых методов API авторизация не требуется.

Реализуемое API делится на три метода:

Получение алгоритма подписи по сертификату

URL метода: rest/sign/getAlg

Входные параметры:

  • certificate - X.509-сертификат пользователя, закодированный в Base64, строка

Метод возвращает JSON-объект со следующими полями:

  • result - результат запроса, строка. В строке может быть либо алгоритм для подписи, например SHA1withRSA, либо строка ERROR, сигнализирующая об ошибке.

Определяет, какому из корневых сертификатов, которым доверяет ARTA Synergy (см. файл configuration/arta/security/digital-signature.xml и задачу EDS1) принадлежит переданный сертификат и возвращает его алгоритм подписи (поле algorithm из вышеуказанного файла).

Сообщение ERROR передаётся в том случае, если корневой сертификат переданного сертификата не является доверенным для ARTA Synergy (отсутствует в файле configuration/arta/security/digital-signature.xml).

В случае некорректной настройки вышеуказанного файла в поле result будет передана пустая строка.

Получение Synergy Object Hash

URL метода: rest/sign/getSOH

Входные параметры:

  • sn - серийный номер сертификата, для которого требуется Synergy Object Hash

Метод возвращает JSON-объект со следующими полями:

  • result - результат запроса, строка

Примечание:

В поле result всегда будет какой-либо Synergy Object Hash, даже если для переданного серийного номера в Synergy отсутствует сертификат

Внимание! Synergy Object Hash должен быть подписан и подписанный результат использован для авторизации в течениe 2 минут, иначе авторизация не пройдёт.

Регистрация пользователя

URL метода: rest/sign/join

Входные параметры:

  • certificate - X.509-сертификат регистрируемого пользователя, закодированный в Base64, строка

  • signedSerialNumber - подписанный по необходимому алгоритму серийный номер ключа (см. EDI3, компонент EDSReg), строка, закодированная в Base64

  • keyInfo - JSON-объект с информацией о сертификате, формат описан в задаче EDI2, (см. запрос типа INFO)

  • username - логин регистрируемого пользователя, строка

  • firstName - имя регистрируемого пользователя, строка

  • lastName - фамилия регистрируемого пользователя, строка

Метод возвращает JSON-объект со следующими полями:

  • resultStatus - статус регистрации:

    • TRUE - успешно зарегистрировано

    • FALSE - при регистрации произошла ошибка

  • resultMSG - сообщение результата, при успешной регистрации там будет идентификатор зарегистрированного пользователя ARTA Synergy, при неуспешной - сообщение об ошибке