Skip to content

Latest commit

 

History

History
51 lines (34 loc) · 1.91 KB

File metadata and controls

51 lines (34 loc) · 1.91 KB

An easy Lambda auhtorizer for API gateway, see https://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html

Example d'un service API gateway :

curl -X GET \
https://7wshnhcek9.execute-api.eu-west-1.amazonaws.com/stable/v2/secure/tokenize/VOD69217605485000 \
-H 'x-api-key:myApiKey' -H 'token:{TO_GENERATE}'

  • nécessite une clé API (dans le header de la requête), nommé "x-api-key", spécifique au partenaire :

      myApiKey
    
  • nécessite un jeton (dans le header de la requête), nommé "token", dont voici l'algorithme (en pseudo code) de génération à partir de l'API key et du salt :

      API_KEY = "myApiKey"
      SALT = "mySalt"
      TOKEN = sha1(concat(API_KEY, SALT, DATE(Ymd)))
    
    • Algorithme en PHP :

       $apiKey = 'myApiKey';
       $salt = 'mySalt';
       $token = sha1($apiKey . $salt . gmdate('Ymd'));
      
    • Algorithme en Javascript (inclure la librairie sha1 https://www.npmjs.com/package/js-sha1):

       var now = new Date(); // fuseau horaire local
       var day = now.getUTCDate();
       var month = now.getUTCMonth() + 1;
       var year = now.getUTCFullYear();
       var stringYmd = String(year) + ('0' + String(month)).slice(-2) + ('0' + String(day)).slice(-2);
      
       var apikey = 'myApiKey';
       var salt = 'mySalt';
       var TOKEN = sha1(apikey + salt + String(stringYmd));
      

remarques

  • Utiliser les dates en UTC uniquement

  • Dans le fichier config.json, vous pouvez ajouter un ou plusieurs partenaires (pas de limitation sur le nombre et les valeurs). Par exemple :

     {
        "apikey":"salt",
        "partenaire-un":"nvQn2F7KP3VSArNd",
        "partenaire-deux":"5kUsfbPNAxtpHT97",
        "partenaire-trois":"DKKt44S3GZFxQrTG"
     }