API Gateway Authorizer 仅在 Flutter 中无法与 Cognito 用户池一起使用

问题描述 投票:0回答:1

我正在使用 Amplify Auth 实现 Flutter 应用程序,以通过 Amazon Cognito 用户池 向用户授权。具体来说,我正在使用官方的 Authenticator 组件,一切看起来都很好,因为我可以注册/登录,并且用户按预期在 Cognito 用户池中创建。

但是,如果我想使用 ID 令牌通过其 AuthorizerAPI Gateway 进行通信,则不起作用。我多次使用新的 ID 令牌测试 Authorizer,但总是导致 403 Unauthorized。

我一直以为我在 API Gateway Authorizer 或/和 Cognito 用户池上进行了任何错误配置(尽管用户池是由 amplify-cli 自动创建的),但我在另一个 iOS 应用程序中尝试了相同的 Cognito 用户池(复制

 amplifyconfiguration.dart
amplifyconfiguration.json
)使用 iOS 的 Amplify Authenticator 框架,它成功了!在同一个 API Gateway Authorizer 上进行测试,对于我在 iOS 应用程序中获得的 ID 令牌,返回 200。

鉴于 iOS 框架和 Flutter 组件之间的行为似乎存在差距,但有人有任何想法吗?

仅供参考:这就是我在每个平台中检索 ID 令牌的方法。

颤动
final cognitoPlugin = Amplify.Auth.getPlugin(AmplifyAuthCognito.pluginKey);
final result = await cognitoPlugin.fetchAuthSession();
final idToken = result.userPoolTokensResult.value.idToken.raw;
iOS
let session = try await Amplify.Auth.fetchAuthSession()
guard let session = session as? AWSAuthCognitoSession else {
    fatalError()
}
switch session.userPoolTokensResult {
    case .success(let success):
        idToken = success.idToken
flutter amazon-cognito aws-amplify
1个回答
0
投票

您的令牌结果应包含 3 个部分:

access_token
id_token
refresh_token
。您应该将
access_token
标头中的
Authorization
的内容传递给 API 网关进行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.