Récupération de la clef publique Cognito

Contexte

Lors des échanges entre les différents composants de la plateforme, il faut s’assurer de la validité du token reçu. À cet usage, Cognito met à disposition une route pour récupérer une clé publique. Celle-ci permet de valider la signature du token et de s’assurer qu’il provient bien de l’instance Cognito de BEYOND.

Le package back end a été conçu pour récupérer cette clé publique.

Usage

const connectorCognito = require('@sixense/cognito-connector-back');

La méthode prend 2 paramètres :

Les valeurs de ces paramètres sont communiquées par l’IT lors de la demande de déclaration d’un nouveau produit.

const publicKeyService = await connectorCognito.getCognitoPublicKey(process.env.AWS_REGION, process.env.AWS_USERPOOLID);

En cas de succès la méthode renvoie une réponse du type :

{
  code: 200,
  publicKey: [
    {
      alg: 'RS256',
      e: 'AQAB',
      kid: 'DiYgEPhfwsKAweOR7VcgNRh3u54nQTXvbQidgZJvFsk=',
      kty: 'RSA',
      n: 'q2JmwZQKERbZ21rqcQ3EafO1toLipWOBeQF47PCAXnwQ4UrkeUz11UPV5ntGuwyeH1aqjNXBJPz5ZoMVglV6OFVnfEBucbkD18-FbuuCoyuoUxvwe8vZSKwo4ULZoFoTa98XRKpVLALwmg86-sEPpMQLhFDaI4TKeSoafhjMDYQ3XepMeZK18ddOjlywLZC2BUisw78tnfJOU2XU7fAEwLsDbWFKUT79TVjjQUIi0g4m_yJyFN3-PGdyBAHqTa_b16faL-REyZ2Lp6eCivmPSpbF-dz1Bol9SPXeza94iPntsxRo34iO7TxAvs0015XdOYXe6VwBGx-TOtGZ8uvsiw',
      use: 'sig'
    },
    {
      alg: 'RS256',
      e: 'AQAB',
      kid: 'ZLz2s1lJ9SRkAlk9BddQ/SNUDkCzeOlRs/4d5lgsOKA=',
      kty: 'RSA',
      n: 'lMAcfgMY2WH3lhoeBxoq_Ac3mQzb8i4GbKpCEy1ef3x5sBaAAje2d_LGOa_d3p946gkg0zIo3_ZrDRoSQkiuuQu2w7pX8BnmREhWXOSRGG-YJAKHxBV50oLu0n746p9qBYy6PsPQYXuVlfnWgzVLkZg-eZc5fIJrqp53mbN1CCSwC4jdgLfr8uW5LPliWKv2SmtaNW8PmWfkz8K0ozotvxX3ipl8WbULklZjDnmL2BNqywOcE8NADMCayqu42sd-F7j5bcDZQo5-C0S0A4leK8FvIrQ8mz3RpEyGnVSn3HvgeuyylOw8oMpW18DscuJcovUGYuT4nwzeUqf_r8_ZpQ',
      use: 'sig'
    }
  ]
}

Il est conseillé de stocker la valeur de cette clé publique afin de ne pas devoir la récupérer à chaque vérification de token. Cependant, il est recommandé d’associer une date d’expiration à ce stockage afin de renouveler périodiquement la clé pour gérer l’expiration de celle-ci. La clé publique est un paramètre obligatoire pour la vérification du token.

En cas d’échec, la méthode renvoie l’une des erreurs suivantes :

{
  message: 'region not valid',
}
{
  message: 'userPoolId is not valid , or the region is not valid',
}
001 Version Initiale Sixense