Como integrar o Cognito com o Social Sign-in

( Ryan Bui) (16 de dezembro de 2020)

por Ryan Bui, desenvolvedor de Javascript

Se desejar integrar manualmente o login social usando o Cognito para seu aplicativo, você vim ao lugar certo! Não consegui integrar o login social com o que o Cognito oferece. Isso ocorria porque o front-end não podia se integrar com os pools de usuários do Amplify ou Cognito facilmente devido ao uso do Flutter. Flutter atualmente é muito jovem para se integrar a esses serviços.

Eu também não queria criar um pool de identidade para conceder credenciais temporárias da AWS ao front-end. Para resolver esse problema, habilitamos um ponto de extremidade / auth que fará a inscrição / login no Cognito programaticamente. Os usuários, por sua vez, obterão tokens de autenticação.

Os usuários devem enviar seus próprios tokens sociais do Google, Facebook ou Apple. A validação desses tokens será feita no back-end.

Inscrição

O que precisamos é usar a biblioteca “CognitoIdentityServiceProvider” e fornecer as credenciais necessárias e os atributos que queremos atribuir ao usuário (e-mail, nome, etc). Esses atributos devem ser exigidos quando o pool é criado (exemplo abaixo).

Em troca, precisamos do ID do usuário que acabamos de criar.

Login

Após o login, precisamos fornecer o nome de usuário e a senha. Se quiser, você pode fazer o login usando apenas o e-mail. quando bem-sucedido, precisamos do idToken que será usado mais tarde ao autorizar chamadas de usuário para nossa API.

Autorizando solicitações de entrada

Existem duas maneiras de configurar os autorizadores. Se fizermos isso manualmente, teremos que abrir o console AWS e ir para o serviço API Gateway e criar um autorizador em nossa API.

Próxima etapa, dê um nome ao autorizador e selecione o pool de usuários do Cognito desejado. Selecione um método em que deseja usar um autorizador e clique em Solicitação de método para vincular esse método ao autorizador.

Primeiro, na autorização, selecione o autorizador. Para escopos OAuth, selecione “NENHUM” para esperar tokens de ID. Se quiser usar tokens de acesso com escopos, você pode seguir a documentação na AWS .

Então, isso é tudo que você precisa fazer para o manual configuração! Se quiser automatizá-lo sem servidor, veja como você pode fazer:

Aqui nós apenas precisa fornecer o ARN do pool de usuários. Não queremos tokens em cache, é por isso que usamos resultTtlInSeconds: 0 . Como uma fonte de identidade, coloque o caminho para o cabeçalho de autorização.

Agora, o consumidor desta API só precisa passar o token de ID do Cognito no cabeçalho de autorização.

Uma rápida recapitulação…

O Cognito não se integra bem com o Flutter. Usamos o AWS SDK para inscrição e login. Fazendo isso, podemos gerar tokens que passaremos de volta para o cliente. Esses tokens são usados ​​para validar com os autorizadores no gateway de API.

Agradecimentos especiais para a coautoria deste artigo. Confira seus tutoriais em:
(Como configurar AWS) na Rota 53 & (Como proxy um site estático S3)

Ryan é um desenvolvedor de Javascript que trabalhou junto com TDD e BDD. Ele gosta de jogar videogame e violão.

TribalScale é uma empresa de inovação global que ajuda empresas adaptar-se e prosperar na era digital. Transformamos equipes e processos, construímos os melhores produtos digitais da categoria e criamos startups inovadoras. Saiba mais sobre nós em nosso website . Conecte-se conosco no Twitter , LinkedIn & Facebook !

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *