Hur man integrerar Cognito med social inloggning

( Ryan Bui) (16 dec 2020)

av Ryan Bui, Javascript-utvecklare

Om du vill integrera social inloggning manuellt med Cognito för din app, du har kommit till rätt ställe! Jag kunde inte integrera social inloggning med vad Cognito erbjuder. Detta berodde på att frontend inte enkelt kunde integreras med Amplify- eller Cognito-användarpooler på grund av deras användning av Flutter. Flutter är för närvarande för ung för att kunna integreras med dessa tjänster.

Jag ville inte heller skapa en identitetspool för att ge tillfälliga AWS-referenser till front-end. För att lösa detta problem aktiverade vi en / auth-slutpunkt som registrerar / loggar in på Cognito programmatiskt. Användarna får i sin tur autentiska tokens.

Användarna måste skicka sina egna sociala tokens från Google, Facebook eller Apple. Valideringen av dessa tokens kommer att göras från baksidan.

Registrering

Vad vi behöver är att använda biblioteket ”CognitoIdentityServiceProvider” och tillhandahålla nödvändiga referenser och attribut som vi vill tilldela användaren (e-post, namn, etc). Dessa attribut måste krävas när poolen skapas (exempel nedan).

I gengäld behöver vi användar-ID som vi just skapat.

Inloggning

Vid inloggning måste vi ange användarnamn och lösenord. Om du vill kan du bara logga in med e-postmeddelandet. när det lyckas behöver vi idToken som kommer att användas senare när du godkänner användarsamtal till vårt API.

Auktorisering av inkommande förfrågningar

Det finns två sätt att konfigurera auktoriserare. Om vi ​​gör det manuellt måste vi öppna AWS-konsolen och gå till API Gateway-tjänsten och skapa en auktoriserare i vårt API.

Nästa steg, ge ett namn till auktoriseraren och välj den Cognito-användarpool du vill ha. Välj en metod där du vill använda en auktoriserare och klicka på Metodförfrågan för att länka den här metoden till auktoriseraren.

Välj först auktoriseraren i auktoriseringen. För OAuth-omfattningar, välj “INGEN” för att förvänta dig ID-token. Om du vill använda åtkomsttoken med omfattning kan du följa dokumentationen i AWS .

Så det är allt du behöver göra för manuell konfiguration! Så här kan du göra det om du vill automatisera det med serverlös:

Här har vi bara måste tillhandahålla ARN för användarpoolen. Vi vill inte cache-tokens och det är därför vi använder resultTtlInSeconds: 0 . Som en identitetskälla, lägg vägen till auktoriseringshuvudet.

Nu behöver konsumenten för detta API bara skicka Cognito ID-token i auktoriseringshuvudet.

En snabb sammanfattning …

Cognito integreras inte bra med Flutter. Vi använde AWS SDK för att registrera och logga in. Genom att göra det kan vi generera tokens som vi skickar tillbaka till klienten. Dessa tokens används för att valideras mot auktoriserare i API-gatewayen.

Särskilt tack för att du författat den här artikeln. Kolla in hans självstudier om:
(Hur man konfigurerar AWS) på väg 53 & (Hur man proxyer en statisk S3-webbplats)

Ryan är en Javascript-utvecklare som har arbetat nära med TDD och BDD. Han tycker om att spela videospel och gitarr.

TribalScale är ett globalt innovationsföretag som hjälper företag anpassa sig och trivas i den digitala eran. Vi förvandlar team och processer, bygger bästa digitala produkter och skapar störande startups. Läs mer om oss på vår webbplats . Anslut till oss på Twitter , LinkedIn & Facebook !

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *