Quiero autenticar a mis usuarios usando Cognito, para una aplicación integrada en Flutter y Dart.
Desafortunadamente, los SDK nativos de AWS no existen para Dart y no puedo usar la interoperabilidad de JS en Flutter.
Miré el flujo de OAuth2, pero eso requiere que mis usuarios sean redirigidos a un formulario de inicio de sesión, lo cual no es bueno para una aplicación móvil.
¿Cuáles son las alternativas?
Puede probar el paquete amazon_cognito_identity_dart que está escrito exclusivamente en Dart.
import 'package:amazon_cognito_identity_dart/cognito.dart'; final userPool = new CognitoUserPool( 'ap-southeast-1_xxxxxxxxx', 'xxxxxxxxxxxxxxxxxxxxxxxxxx'); final cognitoUser = new CognitoUser( 'email@email.my', userPool); final authDetails = new AuthenticationDetails( username: 'email@email.my', password: 'Password001'); CognitoUserSession session; try { session = await cognitoUser.authenticateUser(authDetails); } on CognitoUserException catch (e) { // handle CognitoUser exceptions } catch (e) { print(e); } print(session.isValid());Consulte el Ejemplo de aplicación de contador seguro para obtener ideas sobre cómo usarla con Flutter.
Descargo de responsabilidad: soy el autor original del paquete.
Puede implementar un servicio de backend para validar las credenciales de Cognito.
En este enfoque, puede implementar una pantalla de inicio de sesión en la aplicación móvil que envía las credenciales de usuario al backend. En el backend, puede verificar las credenciales con Cognito SDK y emitir un token que se enviará para las solicitudes de API posteriores desde la aplicación móvil.
Puede usar AWS API Gateway y Lambda para implementar esto.
Por ejemplo, consulte esto para implementar un backend de NodeJS.