Формулировка проблемы:
Задача проходит в рамках реализации прототипа системы EDI на базе платформы ARTA Synergy.
Необходимо API для авторизации и регистрации пользователей с использованием ЭЦП.
API будет использоваться в JavaScript-компонентах для авторизации и регистрации (см. EDI3), в связке c агентом Synergy (см. EDI2).
Решение:
Необходимо реализовать API, необходимое и достаточное для осуществления регистрации и авторизации по ЭЦП
Новые методы API не должны являться публичными и входить в список API, используемых при написании внешних модулей.
Базовый URL для всех новых API - rest/sign
, метод
запроса - POST
.
Для новых методов API авторизация не требуется.
Реализуемое API делится на три метода:
Получение алгоритма подписи по сертификату
Получение Synergy Object Hash - строки, которую нужно подписать для того, чтобы авторизоваться в Synergy
Метод, регистрирующий пользователя по логину, фамилии и имени
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
будет передана пустая строка.
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, при неуспешной
- сообщение об ошибке