Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту alfa_api@alfabank.ru. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
Для подписания сообщения необходимо предварительно загрузить сертификат, используя следующий метод. Если Вы уже загружали сертификат, используя данный метод - повторно выполнять эту операцию не нужно.
Подписание JSON
Тело запроса сформировать алгоритмом ГОСТ Р 34.10-2012 256 бит в виде компактной сериализации в соответствии с JSON Web Signature и подписать тело запроса закрытым ключом сертификата.
Формат JWS
BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)
Структура тела запроса
-
•Заголовок (Header)
-
•
"alg": "GOST3410_2012_256" -
•
"typ": "JWT" -
•
"cty": "JWS" -
•
"kid": "серийный номер сертификата" -
•
"b64": true
-
-
•JSON-документ (Payload)
-
•Подпись запроса (Signature)
Пример JWS
ewogICJhbGciIDogIkdPU1QzNDEwXzIwMTJfMjU2IiwKICAidHlwIiA6ICJKV1QiLAogICJjdHkiIDogIkpXUyIsCiAgImtpZCIgOiAiNmQzOGI4ZTAwNjFiMGY5YTk0ZjEwNGJlNTdlNzdhYTE4IiwKICAiYjY0IiA6IHRydWUKfQ.eyJkZWJpdFR1cm5vdmVyIjp7ImFtb3VudCI6MCwiY3VycmVuY3lOYW1lIjoiUlVSIn19.ByCkNenTTtZQrnZplNOo9WyqPTxb6vFq0iExNHpuPCV6LUeXDFTe8tNBZCy1WvpdUCQBrKK447s3NJCC5hNLhA
Для тестовой проверки можно использовать https://token.dev/.
Если добавить заголовки Content-Type: application/json + X-Request-ChannelSecurity: NO и отправить запрос, то подпись запроса не будет проверяться.
Если добавить заголовки Content-Type: application/jose + X-Request-ChannelSecurity: SIGNATURE и отправить запрос, то подпись запроса будет проверяться.
Если подпись валидна - запрос обрабатывается, если невалидна - Банк определяет запрос как неподлинный и возвращает ошибку.
Любые другие комбинации заголовков Content-Type + X-Request-ChannelSecurity приведут к ошибке.
Проверка подписи JSON
Используйте открытый ключ сертификата Банка для проверки подписи. Для получения сертификата напишите на почту alfa_api@alfabank.ru.
Проверьте подпись в соответствии с данными, указанными в Заголовке (Header). В поле kid заголовка JWS будет записан серийный номер сертификата Банка.
{
"debitTurnover": {
"amount": 0,
"currencyName": "RUR"
}
}