Autenticación

El módulo de autenticación es el encargado de realizar el control de credenciales y permitir acceder al recurso o denegarlo. En caso de error devolverá el Status Code '401 Unauthorized'.

Existen2 tipos de autenticación:

  • Autenticación básica

  • Autenticación por recurso-verbo


AUTENTICACIÓN BÁSICA

Mediante las credenciales appId y appKey, procederemos a la creación del token de autenticación. Este token nos servirá para todos los recursos de la API.

La creación del token se realizará aplicando una conversión a base64 sobre el resultado binario de la una función hash (sha-256) sobre la concatenación de los valores de las credenciales appId y appKey.

token = base64(bin(hash(appId+appKey,'sha-256')))

Ejemplo:

Con la appId hCN3fdW y la appKey TcA1tG1V7q la generación del token sería:

token = base64(bin(hash(hCN3fdWTcA1tG1V7q,'sha-256')))



AUTENTICACIÓN POR RECURSO

Este tipo de autenticación permite que cada recurso-verbo necesite de la generación de un token distinto, no sirve el mismo token para dos recursos diferentes.

En este caso, la creación del token se realizará de la siguiente forma:

token = base64(bin(hash(appId+appKey+uri+verb,'sha-256')))

Ejemplo:

Para el recurso /v1/banners/{id}/activityLimits de tipo GET con la appId hCN3fdW y la appKey TcA1tG1V7q la generación del token sería:

token = base64(bin(hash(hCN3fdWTcA1tG1V7q/v1/banners/{id}/activityLimitsget,'sha-256')))

Importante: uri y verbo siempre en minúscula


USO

Para la realización de peticiones a la API Sync será necesario pasar como cabeceras ('headers') las siguientes claves y sus respectivos valores:

  • appId: hCN3fdW

  • Authorization: Basic NdRA6F49RAHfa20kg5uZOcFQm1H+TxKfAqU5jOZri+8= (Token obtenido con una de las fórmulas anteriores)



CODIGO DE EJEMPLO

JAVA

Alternativa 1

byte[] sha256 = org.apache.commons.codec.digest.DigestUtils.sha256("appId+appKey");

String token = org.apache.commons.codec.binary.Base64.encodeBase64String(sha256);


Alternativa 2

String sha256Hex = org.apache.commons.codec.digest.DigestUtils.sha256Hex("18JfJ42sJ8m8Me2mpghx2scTYBUVvS");

byte[] sha256bytes = Hex.decodeHex(sha256Hex);

String token = org.apache.commons.codec.binary.Base64.encodeBase64String(sha256bytes);



PHP

token = base64_encode(hex2bin(hash("sha256",$appId.$appKey)));



MySQL

SET @appId='hCN3fdW';

SET @appKey='TcA1tG1V7q';

SELECT TO_BASE64(UNHEX(SHA2(CONCAT(@appId, @appKey), 256))) AS token;