Authentication (HMAC)
HMAC-based authentication is the single preferred way of authentication to Recombee APIs.
Thanks to the nature of our APIs, our authentication is based on a simple shared-secret approach with the signature generated according to the HMAC-SHA1 standard. To use HMAC-based authentication, you will need a token, which you can obtain in the Recombee Admin UI.
In the case of a server-side implementation, use the Private Token (which needs to remain secret and known only to you and Recombee), and in the case of a client-side implementation (e.g. in a mobile app), use the Public Token (see this section for details).
There are two query parameters that you need to attach to every API call:
hmac_timestamp- the current UTC Unix timestamp (integer)hmac_sign- the signature computed from your request URI without protocol and host
Every signature has a limited lifetime (currently 30s). It is therefore important for your server time to be synchronized via NTP or other source of precise time.
For example, let's consider a call to the following URL:
The initial input to the signing method does not contain the protocol and host
parts. We'll also add the hmac_timestamp parameter:
We then compute the signature of the above string and append it as the hmac_sign parameter. The result should then look like this:
Hash Examples
To see whether you are hashing properly, you can try to hash the following strings and verify the results:
| String | Hash |
|---|---|
| Hello world | 1291b164d8332792233dcc8ce94e1c9ea6113fb8 |
| /recombee/items/9346/recomms/?count=5&targetUserId=fb2fbe12-9f69-45a1-9fc0-df0c1592e4c7&hmac_timestamp=1398463889 | 090eafba456488622a6d6f0dc37d3a1508536338 |
As mentioned above, the hash is calculated from the URL with the
hmac_timestamp and without the domain or protocol.
Example of a correct hash string:
Example of an incorrect hash string:
Authentication of Client-Side Requests
The same authentication method is used also for client-side (frontend) requests.
The differences are as follows:
- The Public Token is used for signing,
- The parameters have different names - use
frontend_timestampinstead ofhmac_timestampandfrontend_signinstead ofhmac_sign, - The RAPI endpoint is at
client-rapi.recombee.com.
See this example.
Postman
If you want to call the Recombee API using Postman, you can use the following script to authenticate your requests: https://github.com/Pazekal90/recombee-SHA1-HMAC-Postman-Pre-request-Script.
Example Implementations
The description itself can be a bit cumbersome, but the actual implementations are very simple and straightforward:
Python
Ruby
PHP
Java
JavaScript
Using sha1.js from jsSHA.