Autenticação de dispositivos incorporados para enviar notificações por push usando o Amazon SNS

1

Estou criando uma plataforma em que um grande número de dispositivos incorporados habilitados para nuvem enviará notificações push para aplicativos móveis usando o Amazon SNS.

Cada dispositivo incorporado deve criar um tópico do SNS e publicar nesse tópico. Os usuários se registrarão em um tópico e receberão essas notificações.

Minha pergunta é: como os dispositivos incorporados devem lidar com autenticação / autorização com a AWS para criar os tópicos e publicar as notificações. Aqui estão as opções que eu considerei até agora:

  • Crie um único usuário do IAM que será "compartilhado" por todos os dispositivos incorporados. Não é uma boa ideia: se um único dispositivo for invadido, todos eles estarão comprometidos.
  • Crie um usuário IAM diferente para cada dispositivo incorporado. Isso pode ser uma opção, mas a AWS limita isso a 5.000
  • Configure um servidor intermediário que converse com o AWS; um usuário do IAM seria criado para o servidor. Em seguida, o servidor gera credenciais temporárias sob demanda para os dispositivos incorporados, e os dispositivos usam esse recurso para autenticar com a AWS. Eu não gosto disso porque introduz uma dependência adicional / ponto único de falha (o servidor intermediário).

Quais outras opções eu tenho? Tenho certeza de que não sou o primeiro a enfrentar esse problema.

    
por Grodriguez 26.04.2018 / 12:13

1 resposta

2

Você poderia fazer algo assim:

Pré-requisitoseconfiguração:

  1. InstaleoJavascriptSDKnoseudispositivoincorporado(comovocênãomencionouaslimitaçõesdodispositivo,essaarquiteturapresumequeseudispositivoécapazdeexecutaroJavascriptSDK)
  2. Crieum'Pooldeusuários'noCognito(pormeiodoConsoledaAWSouAPI,CLI,etc.)
  3. Comopartedaconfiguraçãoinicialdodispositivo,inscrevaumnovousuáriopordispositivousandoatributosexclusivosquesealinhamàarquitetura,aopúblico-alvodesejadodoaplicativoeaomodelodenegócios

Fluxodeautenticação:

  1. QuandovocêdesejaenviarumanovamensagemparaoSNS,asseguintesaçõesocorrem:
  2. Seuaplicativo(nodispositivoincorporado)iniciaumaautenticaçãodesenharemotaseguracomoCognito(pormeiodosmétodosdoSDK,éclaro)
  3. Seasolicitaçãodeautenticaçãoforbem-sucedida,oCognitoresponderácomumtoken
  4. SeuaplicativousaotokenechamaumpontodeextremidadedoPOSTexpostopeloAPIGatewayeautenticacomotokenrecebidonaetapa3
  5. Otokenéusadoparaautenticaçãono"Pool de usuários" no Cognito para verificar se a solicitação veio de um dispositivo genuíno
  6. Se a solicitação de autenticação for bem-sucedida, o API Gateway invocará uma função do Lambda que tenha uma função do IAM apropriada anexada a ela. Essa função do IAM essencialmente permite a publicação de mensagens em tópicos do SNS
  7. A função Lambda publica a mensagem para o tópico SNS desejado. Como você mencionou que cada dispositivo publicará em seu próprio Tópico do SNS, as informações sobre o Tópico do SNS poderão ser armazenadas nos campos de metadados do usuário no Cognito
por 09.05.2018 / 18:51