HTTP Webhook Strategy - HMAC Configuration
Configure webhooks HMAC to ensure additional authentication layer.
With the HTTP webhook strategy active, events are sent through HTTP POST requests to the configured destination URLs. These requests can be (optionally) authenticated using HMAC (Hash-based message authentication code). By using HMAC, you can add an authentication layer and verify that the incoming data is correct and authentic.
To enable such an authentication mechanism, provide the secretKey in the HTTP configuration:
Root
secretKey– applies to deliveries that use the global HTTP destination URL and to event-specific endpoints that do not define their own secretPer-endpoint
secretKey– secret set on aneventsConfigurationentry or on an endpoint in the Management Dashboard; when present, it overrides the root secret for that target
HMAC involves cryptographic hash function and a secret cryptographic key. SHA-256 is used as a cryptographic hash function and the provided secretKey acts as a secret cryptographic key.
Authentication process
The steps to authenticate the message are as follows:
The
secretKeyis used to produce akey.The event’s payload is converted to JSON format producing a
message.The
SHA-256hash function is used to produce anHMACderived from themessageand thekey.HMACis encoded usingBase64scheme.The encoded HMAC value is attached to the request as the
emporix-event-signatureheader of the HTTP request.
These steps ensure that the recipient is able to verify if the request is correctly authenticated.
Example HMAC implementation
Here is an example JavaScript function which verifies incoming HTTP request on the receiver's side:
This simple function conveys the following logic:
It converts the request body into JSON. The
stringifyfunction from an external library is used to order all the fields and nested objects alphabetically which allows maintaining the correct order.It generates the
keybased on thesecretKey. ThesecretKeyispassword123.It generates the
HMACusingSHA-256hash function.It encodes
HMACtoBase64scheme.It compares the value from the
emporix.event-signatureheader with the generatedHMAC.If the values match, it logs
HMAC validation passed. With the above configuration, if thesecretKeyis set topassword123on the source side, the validation passes.If the values do not match, it logs
HMAC validation didn't pass. With the above configuration, if thesecretKeyis set to some different value thanpassword123on the source side, the validation doesn't pass.
This example demonstrates how you can implement HMAC in your own setup.
Last updated
Was this helpful?

