Bonjour,
pour mon entreprise, j’ai eu besoin d’utiliser cette fonctionnalité depuis notre backend Node.js, voici donc une implémentation de référence en JavaScript utilisant crypto et Buffer de Node.js si cela intéresse quelqu’un :
Remarque :
Pour la cohérence, j’utilise les mêmes valeurs de variables que dans l’implémentation PHP.
Configuration de vos identifiants d’API et de votre clé secrète SSO
const apiKey = '4fe83002bb5fba8c9a61a65e5b4b0a3cf8233b0e4ccafc85ebd6607abab4651a';
const apiUser = 'system';
const connectSecret = 'jdhb19*Xh3!nu(#k';
Configuration des paramètres SSO
const ssoRecord = new URLSearchParams({
external_id: 1,
email: 'bob@example.com',
username: 'bob',
add_groups: 'eurorack',
require_activation: true,
}).toString();
const ssoPayload = Buffer.from(ssoRecord, 'utf8').toString('base64');
const signature = crypto.createHmac('sha256', connectSecret).update(ssoPayload).digest('hex');
Envoi de la requête POST
const updatedUser = await fetch({ // ou axios
method: 'POST',
url: 'https://forum.example.com/admin/users/sync_sso',
headers: {
'Api-Key': apiKey,
'Api-Username': apiUser,
'Content-Type': 'application/json',
},
body: JSON.stringify({
sso: ssoPayload,
sig: signature,
})
}).then((response) => response.json());