@extends('documentation.webservice.squelette') @section('titre') {{ __("Sécurité") }} @endsection @section('menu') @endsection @section('contenu')

Principes

Le web service ELAN Providers est protégé par un système de tokens qui peut être simple ou double selon les cas.

Les tokens


Les tokens principaux

Chaque appel devra être accompagné d’un token "elan-token" passé dans le header.
Chaque token est unique pour chaque Elan providers. Par exemple Effimaintenance n’aura pas le même que EuropFacilities.

Nous allons gérer deux tokens dans le fichier .env:

APP_TOKEN
Token général d’appel interne Elan.
Avec ce token on peut faire du GET, POST... sur toute la base. On ne filtre pas sur l'enseigne appelante.

APP_TOKEN_SIGN
Token que les prestataires devront nous passer en paramètre.
Il va concerner une enseigne en particuler. C'est ce token qui sera fourni aux prestataires.
Exemple de fichier .env :

APP_TOKEN=xtokenelan-d03ed756-256a5-32e87-65315-3268ac456321
APP_TOKEN_SIGN=xtokenelan-d03esss6-21235-32e87-65315-3268ac456321


NB : les valeurs de ces deux tokens doivent être différentes.

La clé sig-code-ws

Ce code va nous permettre de relier l’enseigne appelante à l’appel via des correspondances.
C’est un champ alphanumérique de longueur 15 dont la valeur sera générée aléatoirement et stockée au niveau de l’enseigne dans la base ELAN providers.

Exemple de valeur de clé :

sig-code-ws=vbnhg412grg1231


Il faudra donc fournir cette clé en plus de la clé APP_TOKEN_SIGN au prestataire de l'enseigne pour qu'il puisse intéragir avec le WebService. Si le token reçu correspond au APP_TOKEN_SIGN, alors on va vérifier que dans le Header, on a bien le paramètre sig-code-ws. Le webService filtrera automatiquement les données fournies sur l'enseigne concernée.
Sans cette valeur, le webservice ne renverra aucun résultat.

Le couple APP_TOKEN_SIGN / sig-code-ws va permettre de sécuriser en particulier les requêtes de type GET.
L’idée est qu’une enseigne ou l’un de ses prestataires n’aient pas accès aux interventions des autres enseignes.

NB : ce paramètre est uniquement obligatoire pour les appels concernant les données des DI (interventions, devis, commandes, factures) et des sites. Il n’est donc pas nécessaire pour les activités, paramètres.....

Exemples d'appels sécurisés

Exemple appel CURL

        curl --location --request GET 'http://elan_providers/api/interventions?order=int_number,asc' \
        --header 'Content-Type: application/json' \
        --header 'elan-token: xtokenelan-d03esss6-21235-32e87-65315-3268ac456321' \
        --header 'sig-code-ws: vbnhg412grg1231' \
        --data-raw ''
Exemple appel JQUERY

        var settings = {
        "url": "http://elan_providers/api/interventions?order=int_number,asc",
        "method": "GET",
        "timeout": 0,
        "headers": {
        "Content-Type": "application/json",
        "elan-token": "xtokenelan-d03esss6-21235-32e87-65315-3268ac456321",
        "sig-code-ws": "vbnhg412grg1231"
        },
        };

        $.ajax(settings).done(function (response) {
        console.log(response);
        });
@endsection