如何在不使用本机SDK的情况下使用AWS Cognito登录

haz*_*haz 5 amazon-web-services amazon-cognito flutter

对于使用Flutter和Dart构建的应用程序,我想使用Cognito对我的用户进行身份验证.

不幸的是,Dart不存在原生AWS开发工具包,我不能在Flutter中使用JS互操作.

我查看了OAuth2流程,但这需要将我的用户重定向到登录表单,这对于移动应用程序来说并不是很好.

有哪些替代方案?

Jon*_*Saw 13

您可以尝试完全使用Dart编写的amazon_cognito_identity_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());
Run Code Online (Sandbox Code Playgroud)

请参阅示例安全计数器应用程序以获取有关如何将其与Flutter一起使用的想法.

免责声明:我是该套餐的原作者.

  • 这里的分步说明:https://medium.com/@wesselsbernd/flutter-and-aws-as-of-march-2019-1ad7f40fa9e4 (2认同)

Ash*_*han 4

您可以实施后端服务来验证 Cognito 凭据。

通过这种方法,您可以在移动应用程序中实现登录屏幕,将用户凭据发送到后端。在后端,您可以使用 Cognito SDK 验证凭据并颁发令牌,该令牌将为来自移动应用程序的后续 API 请求发送。

您可以使用 AWS API Gateway 和 Lambda 来实现此目的。

例如,参考这个来实现 NodeJS 后端。

  • API Gateway 使用 SSL 对传输时的数据进行加密。 (2认同)