Comment intégrer Cognito avec Social Sign-in

( Ryan Bui) (16 décembre 2020)

par Ryan Bui, développeur Javascript

Si vous souhaitez intégrer manuellement la connexion sociale à laide de Cognito pour votre application, vous suis venu au bon endroit! Je nai pas pu intégrer la connexion sociale à ce que propose Cognito. Cela était dû au fait que le front-end ne pouvait pas sintégrer facilement avec les groupes dutilisateurs Amplify ou Cognito en raison de leur utilisation de Flutter. Flutter est actuellement trop jeune pour sintégrer à ces services.

Je ne voulais pas non plus créer de pool didentités pour accorder des informations didentification AWS temporaires au front-end. Pour résoudre ce problème, nous avons activé un point de terminaison / auth qui sinscrira / se connectera à Cognito par programmation. Les utilisateurs recevront à leur tour des jetons dauthentification.

Les utilisateurs doivent envoyer leurs propres jetons sociaux depuis Google, Facebook ou Apple. La validation de ces jetons se fera depuis le back-end.

Inscription

Ce dont nous avons besoin est dutiliser la bibliothèque « CognitoIdentityServiceProvider » et fournissez les informations didentification nécessaires et les attributs que nous voulons attribuer à lutilisateur (e-mail, nom, etc.). Ces attributs doivent être obligatoires lors de la création du pool (exemple ci-dessous).

En retour, nous avons besoin de lID utilisateur que nous venons de créer.

Connexion

Lors de la connexion, nous devons fournir le nom dutilisateur et le mot de passe. Si vous le souhaitez, vous pouvez vous connecter uniquement par e-mail. en cas de succès, nous avons besoin de lidToken qui sera utilisé plus tard lors de lautorisation des appels dutilisateurs à notre API.

Autoriser les requêtes entrantes

Il existe deux façons de configurer les autorisateurs. Si nous le faisons manuellement, nous devons ouvrir la console AWS, accéder au service API Gateway et créer un autorisateur dans notre API.

Étape suivante, donnez un nom à lautorisation et sélectionnez le pool dutilisateurs Cognito de votre choix. Sélectionnez une méthode dans laquelle vous souhaitez utiliser un autorisateur et cliquez sur Demande de méthode pour lier cette méthode à lautorisation.

Tout dabord, dans lautorisation, sélectionnez lautorisation. Pour les étendues OAuth, sélectionnez «AUCUN» pour vous attendre à des jetons didentification. Si vous souhaitez utiliser des jetons daccès avec des étendues, vous pouvez suivre la documentation dans AWS .

Cest donc tout ce que vous devez faire pour le manuel configuration! Si vous souhaitez lautomatiser avec le sans serveur, voici comment vous pouvez le faire:

Ici, nous venons de besoin de fournir lARN du pool dutilisateurs. Nous ne voulons pas mettre en cache les jetons, cest pourquoi nous utilisons resultTtlInSeconds: 0 . En tant que source didentité, placez le chemin vers len-tête dautorisation.

Le consommateur de cette API na plus quà transmettre le jeton Cognito ID dans len-tête dautorisation.

Un bref récapitulatif…

Cognito ne sintègre pas bien avec Flutter. Nous avons utilisé le kit SDK AWS pour nous inscrire et nous connecter. Ce faisant, nous pouvons générer des jetons que nous transmettrons au client. Ces jetons sont utilisés pour valider contre les autorisateurs dans la passerelle API.

Un merci spécial à pour la co-création de cet article. Consultez ses tutoriels sur:
(Comment configurer AWS) sur Route 53 & (Comment proxy un site Web statique S3)

Ryan est un développeur Javascript qui a travaillé en étroite collaboration avec TDD et BDD. Il aime jouer aux jeux vidéo et à la guitare.

TribalScale est une entreprise mondiale dinnovation qui aide les entreprises sadapter et prospérer à lère numérique. Nous transformons les équipes et les processus, créons les meilleurs produits numériques de leur catégorie et créons des startups disruptives. En savoir plus sur nous sur notre site Web . Contactez-nous sur Twitter , LinkedIn & Facebook !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *