Hoe Cognito te integreren met Social Sign-in

( Ryan Bui) (16 dec.2020)

door Ryan Bui, Javascript-ontwikkelaar

Als u sociaal aanmelden handmatig wilt integreren met Cognito voor uw app, moet u ben bij ons aan het juiste adres! Ik kon social sign-in niet integreren met wat Cognito biedt. Dit kwam doordat de front-end niet gemakkelijk kon worden geïntegreerd met Amplify- of Cognito-gebruikerspools vanwege het gebruik van Flutter. Flutter is momenteel te jong om te integreren met die services.

Ik wilde ook geen identiteitspool maken om tijdelijke AWS-referenties aan de front-end te verlenen. Om dit probleem op te lossen, hebben we een / auth-eindpunt ingeschakeld dat zich programmatisch aanmeldt / inlogt bij Cognito. De gebruikers krijgen op hun beurt auth-tokens.

De gebruikers moeten hun eigen sociale tokens van Google, Facebook of Apple verzenden. De validatie van die tokens wordt gedaan vanaf de back-end.

Aanmelden

Wat we nodig hebben is om de “CognitoIdentityServiceProvider” -bibliotheek te gebruiken en geef de nodige inloggegevens en de attributen die we aan de gebruiker willen toewijzen (e-mailadres, naam, enz.). Deze kenmerken moeten vereist zijn wanneer de pool wordt gemaakt (voorbeeld hieronder).

In ruil daarvoor hebben we de gebruikers-ID nodig die we zojuist hebben aangemaakt.

Login

Bij het inloggen moeten we de gebruikersnaam en het wachtwoord opgeven. Als je wilt, kun je inloggen met alleen het e-mailadres. als dit lukt, hebben we het idToken nodig dat later zal worden gebruikt bij het autoriseren van gebruikersoproepen naar onze API.

Inkomende verzoeken autoriseren

Er zijn twee manieren om autorisatoren te configureren. Als we het handmatig doen, moeten we de AWS-console openen en naar de API Gateway-service gaan en een autorisatieprogramma in onze API maken.

Geef de volgende stap een naam aan de autorisator en selecteer de gewenste Cognito-gebruikerspool. Selecteer een methode waarvoor u een autorisator wilt gebruiken en klik op Method Request om deze methode aan de authorizer te koppelen.

Selecteer eerst bij autorisatie de autorisator. Selecteer voor OAuth-bereiken “GEEN” om ID-tokens te verwachten. Als u toegangstokens met scopes wilt gebruiken, kunt u de documentatie in AWS volgen.

Dus dat is alles wat u hoeft te doen voor handmatige configuratie! Als u het wilt automatiseren met serverless, kunt u dit als volgt doen:

Hier hebben we zojuist moet het ARN van de gebruikerspool opgeven. We willen tokens niet in het cachegeheugen opslaan, daarom gebruiken we resultTtlInSeconds: 0 . Plaats als identiteitsbron het pad naar de autorisatie-header.

Nu hoeft de gebruiker van deze API alleen het Cognito ID-token door te geven in de autorisatie-header.

Een korte samenvatting …

Cognito kan niet goed worden geïntegreerd met Flutter. We hebben de AWS SDK gebruikt om aan te melden en in te loggen. Door dit te doen, kunnen we tokens genereren die we teruggeven aan de klant. Die tokens worden gebruikt om te valideren tegen autorisatoren in de API-gateway.

Met speciale dank voor het co-schrijven van dit artikel. Bekijk zijn tutorials over:
(Hoe AWS configureren) op Route 53 & (Hoe proxy een S3 statische website)

Ryan is een Javascript-ontwikkelaar die nauw heeft samengewerkt met TDD en BDD. Hij speelt graag videogames en gitaar.

TribalScale is een wereldwijd innovatiebedrijf dat ondernemingen helpt aanpassen en gedijen in het digitale tijdperk. We transformeren teams en processen, bouwen de beste digitale producten in hun klasse en creëren disruptieve startups. Lees meer over ons op onze website . Maak contact met ons op Twitter , LinkedIn & Facebook !

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *