Аутентификация и подпись запросов
Аутентификация запросов
Для аутентификации запросов используется JWT токен, который необходимо передать в заголовке
Authorization: Bearer <JWT_TOKEN>.
Токен вы сможете получить в процессе бординга или у менеджера сопровождения.
Электронная подпись запросов
В целях безопасности проведения финансовых операций через открытое API, необходимо формировать и передавать цифровую подпись запросов в заголовке Signature для следующих типов запросов:
- Платёж через форму мерчанта -> Создание платежа;
- Подтверждение -> Подтверждение платежа;
- Возвраты -> Создание операции возврата.
Формирование ключей
Требования к ключам:
- Алгоритм — RSA;
- Размер ключа — 2048-bit;
- Форма передаваемого ключа — PEM формат, закодированный в Base64 одной строкой (без переносов).
Пример на Bash:
- Сгенерировать закрытый ключ
openssl genrsa -out private_key.pem 2048
- Получить открытый ключ на основе закрытого
openssl rsa -in private_key.pem -pubout -out public_key.pem
- Закодировать открытый ключ в Base64
openssl base64 -A -in public_key.pem -out public_key_base64.pem
- В рамках подключения к API Точки передать полученный на предыдущем шаге
public_key_base64.pem
Подпись запроса
Требования к подписи:
- Hash-функция — sha256;
- Заголовок для передачи подписи -
Signature; - Форма передачи подписи — "сырая" подпись, закодированная в Base64 одной строкой (без переносов).
Пример на Bash:
- Подготовить тело запроса (в данном случае - предположим что оно в файле request.txt);
hello, world
- Подписать тело запроса с помощью приватного ключа и с hash-функцией sha256;
openssl dgst -sha256 -sign private_key.pem request.txt > sign_raw.txt
- Закодировать "сырую" подпись в Base64;
openssl base64 -A -in sign_raw.txt -out sign_base64.txt
- Передавать содержимое
sign_base64.txtв заголовкеSignatureзапросов.