Passer au contenu principal

Un moyen d'empêcher certains appels d'API de S2S

S2S, restreindre les API

Jason Liang avatar
Écrit par Jason Liang
Mis à jour il y a plus de 3 mois

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 S2SDispatcherle service processMessageOperation.

{
"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 userservices globalEntityet, ainsi que toutes les API du scriptservice. 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 le listtypehook to whitelistpour 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 Explorerou depuis votre serveur S2S. Si les API/opérations sont répertoriées dans votre blocklist, 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
    }
Avez-vous trouvé la réponse à votre question ?