Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту alfa_api@alfabank.ru. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
Для подписания сообщения необходимо предварительно выпустить сертификат в УЦ Альфа-Банка, используя сервис "Электронная подпись". Если Вы уже выпускали сертификат - повторно выпускать не нужно.
Подписание JSON
Тело запроса сформировать алгоритмом RS256 в виде компактной сериализации в соответствии с JSON Web Signature и подписать тело запроса закрытым ключом сертификата, выпущенным в сервисе "Электронная подпись".
Формат JWS
BASE64URL(UTF8(JWS Protected Header)) || '.' || BASE64URL(JWS Payload) || '.' || BASE64URL(JWS Signature)
Структура тела запроса
-
•Заголовок (Header)
-
•
"kid": "серийный номер сертификата" -
•
"typ": "JWT" -
•
"alg": "RS256"
-
-
•JSON-документ (Payload)
-
•Подпись запроса (Signature)
Пример JWS
eyJhbGciOiJSUzI1NiIsImtpZCI6IjYxMDAwMzYzY2NiNzU5Y2I0NDg2MDc4NjVkMDAwMTAwMDM2M2NjIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTY1Nzg4MjY4OSwiZXhwIjoxNjU3ODg2Mjg5fQ.ApKNzZ9kLMtBY3LzReSHQ7_AyDnzocGo9GTQFRmxTiRS7Lj7a55Kr4ziwZAmmwloF1063JJMOaU0lS947q6_hSct9pxzPdZ9tTmpIDGnQL-ks0oB7zz9vUSUd3G00UZXSYnuhI9BBRXvmmTaue5Y2j5zVZofLdO2dqPWCnsQULyLn_vYf8PeABhnAQ29z1Bq42uxfRFTM35cF40Tp4VBSqXDI1vxfleLusQlOZM-5Sk7O3Vy4Sf-UB03RrRGSBerZjdoMRh7dgEyoYAXS6c4MejCm2vmXKqSd7pu2V2TxOM9UTchkCS16DL-RIJtnfMjznmznU5SoMCpncvs6gRNeQ
Для тестовой проверки можно использовать 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
Используйте открытый ключ сертификата для проверки подписи.
Проверьте подпись в соответствии с данными, указанными в Заголовке (Header). В поле kid заголовка JWS будет записан серийный номер сертификата Банка.
{
"debitTurnover": {
"amount": 0,
"currencyName": "RUR"
}
}