Skip to content

Mécanisme d'autorisation pour API Gateway grâce à cette fonction Lambda. Elle prend, en config, un fichier de correspondance apiKey/salt. Le partenaire qui devra utiliser l'API, devra connaître l'algo de génération du token (à partir de apiKey/salt) qui est utilisé dans la function Lambda. Une dimension timestamp renforce l'algo pour augmenter l…

Notifications You must be signed in to change notification settings

jpiou/aws-apigateway-lambda-authorizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

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"
     }
    

About

Mécanisme d'autorisation pour API Gateway grâce à cette fonction Lambda. Elle prend, en config, un fichier de correspondance apiKey/salt. Le partenaire qui devra utiliser l'API, devra connaître l'algo de génération du token (à partir de apiKey/salt) qui est utilisé dans la function Lambda. Une dimension timestamp renforce l'algo pour augmenter l…

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published