Аутентификация
Вам потребуется подписывать свои запросы к API протокола. В этом руководстве мы рассмотрим, как работает аутентификация.
Формирование аутентификации
Для прохождения аутентификации необходимо добавить заголовки x-key-id, x-project-id и Authorization. Пример как пройти аутентификацию с помощью cURL:
Пример запроса с авторизацией
curl --location 'http://verifyv1.trust-defender.ru/v1/check' \
--header 'x-key-id: hmac-sha256-2171075460' \
--header 'x-project-id: 0192ceda-fbab-7f82-894c-6c446e6c4a9f' \
--header 'Authorization: eyJhbGciOiJIUzI1NiJ9.eyJkaWdlc3QiOiJOVGRtT0RBMU9EWXlOREV4T0RsbU1HWXlNV0poTURJM04yVXhNREprTXpaaE16WTNPRGt3WmpjNVpEZzRaR1JsTVdGa1kyVmlNVEk1TjJVNVpqZGpOdz09IiwiZGlnZXN0X2FsZ29yaXRobSI6IlNIQS0yNTYiLCJpYXQiOjE3MzI0OTc5Njh9.LG1BmWwSf94my19YAz6uxrGqLhOQ2Nz4NNEjiyKz7n0' \
--header 'Content-Type: application/json'
Формирование JSON Web Token (JWT)
Для генерации JSON Web Token используется тело запроса. Генерируем hash из тела запроса по алгоритму SHA-256 (Возможные варианты MD5 и SHA-512).
После чего, полученную строку необходимо закодировать с применением алгоритма Base64 (Этот метод должен соответствовать стандарту RFC4648)
В payload добавляем:
В заключение генерируем JSON Web Token и подписываем заголовок и полезную нагрузку алгоритмом SHA-256 (HS256)
Пример
require 'jwt'
require 'digest'
require "base64"
digest = Base64.strict_encode64(Digest::SHA256.hexdigest(body))
payload = { digest: digest, digest_algorithm: "SHA-256", iat: iat }
token = JWT.encode payload, hmac_secret, 'HS256'