J’obtiens l'erreur {“CODE”:”1002″,”MESSAGE”:”AUTHORIZATION ERROR: FULL AUTHENTICATION IS REQUIRED TO ACCESS THIS RESOURCE »}. Que faire ?

Le message {“code”:”1002″,”message”:”Authorization error: Full authentication is required to access this resource »} indique un problème d’Authentification.

En effet, pour utiliser API-money, il est nécessaire que nous puissions authentifier l’utilisateur qui a initié la requête.

 

Vous pouvez commencer par une requête simple de type GET, sans “body”, comme :

GET /accounts

Cela vous permettra, par ailleurs de récupérer votre identifiant de compte Partenaire, déjà créé dans le système (cf. doc : https://www.api-money.com/docs/#Accountservices-Createanaccount-Standard & https://www.api-money.com/docs/#Overview-Authentication).

 

Ci-dessous un exemple détaillé de construction de la requête, avec les paramètres de test suivants :

– sandbox URL : https://test-emoney-services.w-ha.com/dashboard/#/login
– api_access_key : k1rXpphkRG!2-Fox
– api_secret_key : E0!oYfVpA6-noiqGr-pT7AJ2ybT4r7lx
– version : 1

 

1°) Première étape : “StringToSign”

La première étape consiste à construire le “message” à signer.

StringToSign = api_access_key:timestamp:version:

Exemple :

> StringToSign = k1rXpphkRG!2-Fox:timestamp:1:

(ci-dessus la valeur :timestamp: doit contenir un timestamp d’une suite de chiffres, comme ceci :1672650133163: )

 

⚠️ Attention ⚠️ :
⚠️Le timestamp (unix) désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise (cf. http://www.timestamp.fr).

Dans les requêtes API-money, vous devez indiquer le timestamp en millisecondes correspondant au moment de l’envoi de votre requête vers la PF API-money. ⚠️

 

2°) Deuxième étape : “Sign”

La deuxième étape consiste à encoder le “Sign” en HMCA (SHA256) à partir du “message” à signer (StringToSign) et de la clef secrète (api_secret_key).
L’engodage HMAC assure l’intégrité du message.

Sign = HMAC-SHA256(StringToSign, api_secret_key)
Sign = HMAC-SHA256(k1rXpphkRG!2-Fox:1672650133163:1:, E0!oYfVpA6-noiqGr-pT7AJ2ybT4r7lx)

Exemple :

> Sign = fdc93dee9a203b2a544e7bcc5f34918e89c547c2ee5503071482a9fbfb3e4e8e

Vous pouvez vérifier votre calcul du HMAC, en utilisant, par exemple, l’outil : https://www.freeformatter.com/hmac-generator.html#ad-output

 

 3°) Troisième étape : Requête (en théorie)

Il ne reste plus qu’à générer et envoyer la requête vers l’URL de la plate-forme :

GET /accounts

Paramètre du Header :

Authorization: AUTH api_access_key:timestamp:version:Sign

Exemple :

URL endpoint : GET /accounts
> Header : Authorization : AUTH k1rXpphkRG!2-Fox:1672650133163:1:fdc93dee9a203b2a544e7bcc5f34918e89c547c2ee5503071482a9fbfb3e4e8e

 

4°) Quatrième étape : la Requête (en pratique)

Pour vérifier le bon fonctionnement de la requête, vous pouvez lancer la commande CURL suivante avec vos propres identifiants et y ajouter votre timestamp ainsi que votre Sign (encodé HMAC SHA256) :

curl –location –request GET ‘https://test-emoney-services.w-ha.com/api/accounts’ \
–header ‘Authorization: AUTH odzAr67enYtX7vDdiLwdMYOTh6R4ZQUz:[Timestamp]:1:[Sign]’

 

ATTENTION : une fois la requête préparée, elle n’est valable que pendant 1 heure (le timestamp ne doit pas être âgé de plus de 5 minutes à l’instant T de la requête ) dans l’environnement de test (sandbox) !

 

Vous devriez obtenir un résultat du type :

[
    {
        “id”: “AB-0895358735216643”,
        “type”: “BUSINESS”,
        “status”: “ACTIVE”,
        “tag”: “account_type1”,
        “creation_date”: “2022-12-23T14:40:26+0100”,
        “kyc_level”: “LEVEL_1”
    },
    {
        “id”: “AS-5205597398211593”,
        “type”: “STANDARD”,
        “status”: “ACTIVE”,
        “tag”: “account_type1”,
        “creation_date”: “2022-12-23T14:20:37+0100”,
        “kyc_level”: “LEVEL_1”
    }
]
.json