Pour certaines raisons de sécurité, vous souhaiterez peut-être restreindre l'accès de votre serveur aux appels d'API S2S limités de brainCloud. Cet article vous montrera comment utiliser brainCloud API Hook pour y parvenir.
Étape 1 : Créer un script de pré-accrochage
Créez un script appelé
RestrictS2SCalls
"use strict";
function main() {
var response = false;
bridge.logDebugJson("script input...", data);
// appliquer des restrictions si cet appel ne provient pas *de l'intérieur* d'un script cloud-code
if ( !data.message.ccCall) {
var listtype = data.parms.listtype;
var services = data.parms.services;
// la réponse par défaut diffère selon le type de liste
if (listtype == "whitelist") {
response = false;
} else {
response = true;
}
// vérifier si le service est répertorié
if (services.hasOwnProperty(data.service)) {
var ops = services[data.service];
// vérifier les opérations répertoriées dans le service
if (Object.keys(ops).length > 0) {
if (ops.hasOwnProperty(data.operation)) {
response = (listtype == "whitelist");
}
} else {
// si aucune opération, cela signifie tous...
response = (listtype == "whitelist");
}
}
} else {
response = true;
}
return response;
}
main();
Étape 2 : Connecter le script
Ouvrez la page Conception | Code Cloud | Crochets API et pré-accrochez le script que vous avez créé à l’étape précédente avec les paramètres suivants pour S2SDispatcher
le service processMessage
Operation.
{
"listtype": "blocklist",
"services": {
"user": {
"SYS_GET_PAGE": 1
},
"globalEntity": {
"GET_LIST": 1,
"GET_LIST_COUNT": 1
},
"script": {}
}
}
Cet exemple bloquera les appels d'API/d'opération spécifiés à partir des
user
servicesglobalEntity
et, ainsi que toutes les API duscript
service. Vous pouvez les modifier à votre guise. Recherchez le service et l'opération à partir de la référence d'API brainCloud . Notez également que vous pouvez modifier lelisttype
hook towhitelist
pour que ce hook n'autorise que les appels à partir des services et opérations répertoriés.
Étape 3 : Test
Appelez les API/opérations bloquées depuis brainCloud
S2S Explorer
ou depuis votre serveur S2S. Si les API/opérations sont répertoriées dans votreblocklist
, vous devriez obtenir une réponse similaire à la suivante.{
"reason_code": 40639,
"status_message": "Processing exception: Api call rejected for service: globalEntity - operation: GET_LIST",
"status": 500
}