Как я могу отключить подпись laravel spatie?

#node.js #laravel #laravel-8 #webhooks

#node.js #laravel #laravel-8 #webhooks

Вопрос:

Я получаю webhook с js-сервера узла. Каждый раз, когда узел попадает в конечную точку laravel webhook, он возвращает ошибку `Подпись недействительна.
Как я могу отключить подпись по умолчанию из laravel spatie или написать свою собственную подпись? Или еще лучше: как мне отправить подпись с сервера узла, которая будет принята laravel spatie?

Ответ №1:

Если вы используете laravel-webhook-client, в их документации есть раздел, в котором рассказывается, как проверяется подпись:

Проверка подписи входящих webhooks Этот пакет предполагает, что входящий запрос webhook имеет заголовок, который можно использовать для проверки того, что полезная нагрузка не была подделана. Имя заголовка, содержащего подпись, может быть настроено в ключе signature_header_name файла конфигурации. По умолчанию пакет использует DefaultSignatureValidator для проверки подписей. Вот как этот класс будет вычислять подпись.

$computedSignature = hash_hmac(‘sha256’, $request->getContent(), $configuredSigningSecret); Если значение $computedSignature действительно соответствует значению, запрос будет передан в профиль webhook. Если $computedSignature не соответствует значению в заголовке подписи, пакет ответит 500 и отклонит запрос.

Если вы хотите сохранить проверку подписи на месте, создайте подпись и добавьте ее в заголовок запроса в Node, используя механизм, описанный выше.

Если вы не хотите игнорировать подпись, отправьте пустой заголовок и создайте свой собственный класс SignatureValidator следующим образом:

 class YourSignatureValidator implements SpatieSignatureValidator {
  public function isValid(): bool {
    return true;
  }
}
  

Затем укажите на этот класс валидатора в конфигурации, как указано здесь:

 'signature_validator' => AppYourSignatureValidator::class,